将Javascript RegExp转换为与Grep或Sed一起工作

Convert Javascript RegExp to work with Grep or Sed

本文关键字:Sed 一起 工作 Grep Javascript RegExp 转换      更新时间:2023-09-26

我需要在服务器上grep一些文件,所以我很快就在javascript控制台上测试了一个regexp来满足我的需求:

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中工作,但都失败了。

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

也可以使用-i标志代替/i修饰符

grep "mssql_query *(['"''][a-z0-9_ ]*_sp'|usp_" 

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

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