Regexp для поиска всех регулярных выражений в проекте

Мне нужно оптимизировать все регулярные выражения в проекте JavaScript. Я нашел все, созданные с помощью нового RegExp, с помощью простого поиска. Проблема заключается в том, что они созданы как литералы: /asd/.

Я использую PhPStorm, поэтому механизм регулярных выражений - Java. Это означает, что мы оглядываемся назад. Итак, я придумал это:

(?<=[\s=(,\[\?:;|)])\/[^*\n/][^\n/]*[^*]\/

Это означает дать мне все, что выглядит как /.../ и не предшествует одному из следующих: \s= (,[?:;|).

  1. Может ли регулярному выражению предшествовать что-либо еще?
  2. У вас есть идея получше?

Поиск методов, используемых классами String и RegExp, недопустим (exec, replace...), поскольку поиск объявления в некоторых проектах очень сложен и требует много времени. Кроме того, вы можете использовать одно и то же регулярное выражение несколько раз.


person Mihai    schedule 09.11.2016    source источник
comment
Вы не можете эффективно анализировать исходный код с помощью регулярных выражений, только в определенных контекстах. Таким образом, взгляд назад мало помогает. Вы можете попробовать использовать /[^\\/]*(?:\\/[^\\/]*)*/, но, боюсь, это приведет к перегрузке. Да, вы можете добавить (?<!\\) перед ним, но (теоретически) все равно будут другие крайние случаи.   -  person Wiktor Stribiżew    schedule 09.11.2016
comment
Также обратите внимание, что в регулярном выражении JavaScript могут быть флаги после выражения, g - глобальный i - нечувствительный к регистру m - многострочный y - липкий поиск   -  person Stefan    schedule 09.11.2016
comment
Вы можете искать все методы, использующие регулярные выражения: exec, test, match, search, replace и split   -  person R. Schifini    schedule 09.11.2016
comment
Мне не нужно эффективно анализировать. Единственное строгое условие — не пропустить ни одного. И я хочу, чтобы ложных срабатываний было как можно меньше.   -  person Mihai    schedule 09.11.2016
comment
Поиск exec, test, match, search, replace и split также даст мне новое регулярное выражение, сформированное RegExp, и мне нужно перейти к файлу и увидеть объявление. В JavaScript для некоторых проектов это почти невозможно.   -  person Mihai    schedule 09.11.2016


Ответы (1)


Мое регулярное выражение было немного не так. Я использовал это в конце концов:

(?<=[\s=(,\[\?:;|)])\/[^\n/].*?\/
person Mihai    schedule 10.11.2016