将JavaScript RegExp转换为使用Grep或Sed [英] Convert Javascript RegExp to work with Grep or Sed
问题描述
<$我需要在服务器上grep一些文件,以便快速入侵并测试JavaScript控制台中的正则表达式以满足我的需求。 c $ c> var regexp = / mssql_query \s * \([\\'] [a-z0-9_\s] *(_ sp | usp _)/ i
//想传递
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)
//想失败
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中工作,但失败惨败。
grepmssql_query *([\\'] [a-z0-9_] * _ sp \ | usp_
应该完成这项工作。它正在寻找:
- mssql_query,然后
- 0或更多空格(即
*
),然后是
- (然后是或(即
([\\ ']
),那么 - 0个或多个小写字母,数字,下划线或空格的字符(即
[a-z0 -9_] *
),然后
- _sp或usp_(即
_sp \ | usp _
)
- _sp或usp_(即
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.
grep "mssql_query *([\"\'][a-z0-9_ ]*_sp\|usp_"
ought to do the job. It is looking for:
- mssql_query, then
- 0 or more spaces (that's the
" *"
), then - (, then " or ' (that's the
([\"\']
), then - 0 or more characters that are lowercase letters, numbers, underscores or spaces (that's the
[a-z0-9_ ]*
), then - _sp or usp_ (that's the
_sp\|usp_
)
这篇关于将JavaScript RegExp转换为使用Grep或Sed的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!