Сотни RegEx на одну строку - PullRequest
       36

Сотни RegEx на одну строку

0 голосов
/ 11 августа 2011

Я использую Java / Groovy, чтобы найти совпадения (и извлечь их) в строке через RegEx.Каков наилучший способ найти совпадения из 200 или более регулярных выражений в строке, скажем, 5000 символов с точки зрения производительности.Короче говоря, возможно ли избежать сканирования строки для каждого RegEx?

Я могу использовать классы Pattern и Matcher, предоставляемые Java, но тогда мне придется скомпилировать 200 шаблонов, а затем передать строку в matcher 200раз.Это единственный способ сделать это?

1 Ответ

3 голосов
/ 11 августа 2011

Если у ваших регулярных выражений нет общих совпадений, вы всегда можете объединить их в гигантские, используя альтернативы, например

( regex1 ) | ( regex2 ) | .... | ( regexN )

Однако, учитывая сложность вашей проблемы, я думаю, вам следует подумать о переходе с регулярных выражений направильная комбинация сканер / парсер.Это займет время заранее, но полученное решение будет намного более управляемым.Почему бы вам не проверить Antlr ?

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