Конвертировать Javascript RegExp для работы с Grep или Sed - PullRequest
0 голосов
/ 15 сентября 2011

Мне нужно было выполнить 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, но с треском провалился.

Ответы [ 2 ]

0 голосов
/ 15 сентября 2011

используйте egrep (псевдоним grep -E, используя расширенные регулярные выражения).

также вместо модификатора / i используйте флаг -i для grep.

0 голосов
/ 15 сентября 2011
grep "mssql_query *([\"\'][a-z0-9_ ]*_sp\|usp_" 

должен сделать работу.Он ищет:

  1. mssql_query, затем
  2. 0 или более пробелов (это " *"), затем
  3. (, затем "или" (это([\"\']), затем
  4. 0 или более символов, которые являются строчными буквами, цифрами, подчеркиванием или пробелами (это [a-z0-9_ ]*), затем
  5. _sp или usp_ (это _sp\|usp_)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...