Reputation: 1473
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.
Upvotes: 2
Views: 4218
Reputation: 1278
use egrep (alias for grep -E , using extended regular expressions).
also instead of the /i modifier use the -i flag for grep.
Upvotes: 1
Reputation: 992
grep "mssql_query *([\"\'][a-z0-9_ ]*_sp\|usp_"
ought to do the job. It is looking for:
" *"
), then([\"\']
), then[a-z0-9_ ]*
), then_sp\|usp_
)Upvotes: 0