Проверка PCRE на JavaJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Проверка PCRE на Java

Сообщение Anonymous »

Как я могу проверить, что содержимое строки является допустимым PCRE в Java? Я не хочу каким-либо образом использовать регулярное выражение в Java, просто проверяю его содержимое.

java.util.regex.Pattern почти достаточно хорош, но в его javadoc указано, чем оно отличается от Perl.

Подробнее, существует система с тремя соответствующими компонентами:
  • Компонент A — генерирует, среди прочего, Perl-совместимые регулярные выражения (PCRE), которые должны оцениваться во время выполнения каким-либо другим компонентом, способным выполнять PCRE (компонент C). То, что здесь «сгенерировано», может исходить от человека.
  • Компонент B — проверяет данные, сгенерированные компонентом A, и, если они верны, передает их в среду выполнения (компонент C).
  • Компонент C — некоторая среда выполнения, которая оценивает PCRE. Это может быть виртуальная машина Perl, собственный процесс, использующий библиотеку PCRE, Boost.Regex и т. д., или что-то еще, что может скомпилировать/выполнить регулярное выражение, совместимое с Perl.
Теперь компонент B реализован на Java. Как упоминалось выше, ему необходимо проверить строку, потенциально содержащую PCRE, но нет необходимости ее выполнять.

Как мы можем это сделать?

Один из вариантов может быть примерно таким:

Код: Выделить всё

public static boolean isValidPCRE(String str) {
try {
Pattern.compile(str);
} catch (PatternSyntaxException e) {
return false;
}

return true;
}
Проблема в том, что java.util.regex.Pattern предназначен для работы с синтаксисом регулярных выражений, который не совсем совместим с Perl. В javadoc это совершенно ясно показано.

Итак, учитывая строку, как я могу проверить, что ее содержимое является действительным PCRE в Java?

Примечание: между libPCRE и Perl есть некоторые различия, но они довольно незначительны. В определенной степени это справедливо и в отношении синтаксиса Java. Однако вопрос остается в силе.

Подробнее здесь: https://stackoverflow.com/questions/412 ... re-in-java
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»