转换 Javascript RegExp 以与 Grep 或 Sed 一起使用
我需要在服务器上 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
使用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.
应该做这项工作。它正在寻找:
" *"
),然后是([\"\']
),然后[a-z0-9_ ]*
),然后_sp\|usp_
)ought to do the job. It is looking for:
" *"
), then([\"\']
), then[a-z0-9_ ]*
), then_sp\|usp_
)