Регулярное выражение для поиска регулярного выражения? - PullRequest
8 голосов
/ 23 марта 2009

Есть ли у кого-нибудь код для поиска файла, содержащего регулярное выражение? Я бы предположил, что у вас может быть два разных вкуса, один для BRE и один для ERE.

Вы могли бы подумать, что у некоторых наборов тестов будет что-то вроде теста isRegex (). Может ли кто-нибудь иметь какой-либо код? Ищете что-то всеобъемлющее, конечно.

Я вижу, что это обсуждалось здесь , но не видел никаких практических ответов. Если я хочу использовать grep для любого файла, который содержит регулярное выражение, возможно, ограниченное типичным //, как бы я это сделал?

Ответы [ 3 ]

18 голосов
/ 23 марта 2009

Регулярные выражения сами по себе не являются регулярным языком . Подсказка состоит в том, что они содержат круглые скобки и квадратные скобки и такие, которые должны быть сбалансированы.

Само регулярное выражение может быть описано контекстно-свободной грамматикой и проанализировано с помощью синтаксического анализатора рекурсивного спуска .

3 голосов
/ 23 марта 2009

Beyond

egrep '/.+/' file

вы смотрите на действительно сложное упражнение.

1 голос
/ 23 марта 2009

Если вы ищете специально файлы, которые содержат только или в основном регулярные выражения, тогда статистика должна сказать вам, что определенный файл содержит больше этого синтаксиса, чем другие. Таким образом, вы можете определить набор показателей и объединить их оценки в метрику, которая оценивает файл на предмет вероятности того, что он будет представлять интерес. Выберите отсечение и отпустите. Некоторые показатели:

  • Наличие более одного [0-9], [A-Z], + и т. Д.
  • Наличие / foo /
  • Не стандартный файл кода
  • Менее сжимаемый (изворотливо, я знаю, но сжатость грамматики регулярных выражений будет интуитивно сложнее сжать, чем обычные слова)
  • и т.д.

Но если это всего лишь один выстрел, то, вероятно, лучше всего использовать ответ Хаоса и вручную анализировать результаты. Есть ли что-то конкретное в регулярном выражении (ях), которое вы ищете, что может быть легче понять?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...