Я пытаюсь использовать регулярное выражение для анализа файла путем извлечения определенных фрагментов текста. Регулярные выражения, которые мне нужно использовать, не поддерживаются стандартными пакетами java.util.regex
(так как мне нужно сопоставить вложенные конструкции, такие как вложенные скобки {}
и другие подобные вещи), поэтому я решил попробовать JRegex
, который утверждает, что полностью обрабатывает синтаксис regex Perl 5.6. Тем не менее, я столкнулся с проблемой при попытке использовать этот пакет с рекурсивным регулярным выражением в соответствии с вложенными скобками {}
:
Pattern p = new Pattern("(\\{(?:(?1)*|[^{}]*)+\\}|\\w+)"); // jregex.Pattern
Exception in thread "main" jregex.PatternSyntaxException: wrong char after "(?": 1
Аналогичное регулярное выражение /(\{(?:(?1)*|[^{}]+)+\}|\w+)/sg
работает, как ожидалось, в Perl. Итак, моя следующая идея заключалась в том, чтобы найти способ проанализировать файл в Perl, а затем передать результаты на Java (желательно в виде массива строк или что-то подобное), а мой вопрос: что это лучший способ сделать это в этом случае? Или, есть ли еще одна более простая альтернатива, которую я пропускаю?