java.util.regex.Pattern почти достаточно хорош, но в его javadoc указано, чем оно отличается от Perl.
Подробнее, существует система с тремя соответствующими компонентами:
- Компонент A — генерирует, среди прочего, Perl-совместимые регулярные выражения (PCRE), которые должны оцениваться во время выполнения каким-либо другим компонентом, способным выполнять PCRE (компонент C). То, что здесь «сгенерировано», может исходить от человека.
- Компонент B — проверяет данные, сгенерированные компонентом A, и, если они верны, передает их в среду выполнения (компонент C).
- Компонент C — некоторая среда выполнения, которая оценивает PCRE. Это может быть виртуальная машина Perl, собственный процесс, использующий библиотеку PCRE, Boost.Regex и т. д., или что-то еще, что может скомпилировать/выполнить регулярное выражение, совместимое с Perl.
Как мы можем это сделать?
Один из вариантов может быть примерно таким:
Код: Выделить всё
public static boolean isValidPCRE(String str) {
try {
Pattern.compile(str);
} catch (PatternSyntaxException e) {
return false;
}
return true;
}
Итак, учитывая строку, как я могу проверить, что ее содержимое является действительным PCRE в Java?
Примечание: между libPCRE и Perl есть некоторые различия, но они довольно незначительны. В определенной степени это справедливо и в отношении синтаксиса Java. Однако вопрос остается в силе.
Подробнее здесь: https://stackoverflow.com/questions/412 ... re-in-java
Мобильная версия