转换 Javascript RegExp 以与 Grep 或 Sed 一起使用

发布于 2024-12-04 21:36:21 字数 718 浏览 1 评论 0原文

我需要在服务器上 grep 一些文件,所以我快速破解并在 javascript 控制台中测试了一个正则表达式来满足我的需求:

var regexp = /mssql_query\s*\([\"\'][a-z0-9_\s]*(_sp|usp_)/i

// want to pass
regexp.test('mssql_query ("something_sp')
regexp.test('mssql_query("exec something_sp')
regexp.test("mssql_query('something_else_sp")
regexp.test('mssql_query("_usp_sp')
regexp.test('mssql_query ("_usp_somethig')
regexp.test("mssql_query('_usp_something_else")

// want to fail
regexp.test('mssql_query ("something_s')
regexp.test('mssql_query("exec something_p')
regexp.test('mssql_query("select')

该表达式非常适合我扔给它的所有测试用例,但是我似乎无法得到与 grep 一起使用的表达式。 有没有办法将 EMCA 表达式转换为 ERE 或 BRE 表达式,以便我可以将其与 grep 或 sed 一起使用?

我尝试调整它以使其在 grep 中工作,但惨败。

I needed to grep some files on a server so I quickly hacked out and tested a regexp in a javascript console to meet my needs:

var regexp = /mssql_query\s*\([\"\'][a-z0-9_\s]*(_sp|usp_)/i

// want to pass
regexp.test('mssql_query ("something_sp')
regexp.test('mssql_query("exec something_sp')
regexp.test("mssql_query('something_else_sp")
regexp.test('mssql_query("_usp_sp')
regexp.test('mssql_query ("_usp_somethig')
regexp.test("mssql_query('_usp_something_else")

// want to fail
regexp.test('mssql_query ("something_s')
regexp.test('mssql_query("exec something_p')
regexp.test('mssql_query("select')

The expression works perfectly for all the test cases I threw at it, however I can't seem to get the expression to work with grep.
Is there a way to convert an EMCA expression to an ERE or BRE expression so I can use it with grep or sed?

I've tried tweaking it to work in grep but have failed miserably.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

友谊不毕业 2024-12-11 21:36:21

使用egrep(grep -E的别名,使用扩展正则表达式)。

还可以使用 grep 的 -i 标志来代替 /i 修饰符。

use egrep (alias for grep -E , using extended regular expressions).

also instead of the /i modifier use the -i flag for grep.

可爱暴击 2024-12-11 21:36:21
grep "mssql_query *([\"\'][a-z0-9_ ]*_sp\|usp_" 

应该做这项工作。它正在寻找:

  1. mssql_query,然后
  2. 是 0 个或多个空格(即 " *"),然后是
  3. (,然后是 " 或 '(即 ([\"\']),然后
  4. 是 0 个或多个小写字母、数字、下划线或空格字符(即 [a-z0-9_ ]*),然后
  5. 是 _sp 或 usp_(即_sp\|usp_)
grep "mssql_query *([\"\'][a-z0-9_ ]*_sp\|usp_" 

ought to do the job. It is looking for:

  1. mssql_query, then
  2. 0 or more spaces (that's the " *"), then
  3. (, then " or ' (that's the ([\"\']), then
  4. 0 or more characters that are lowercase letters, numbers, underscores or spaces (that's the [a-z0-9_ ]*), then
  5. _sp or usp_ (that's the _sp\|usp_)
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文