Альтернативы регулярным выражениям

Я склонен согласиться с Rex regexp M, хотя ваше второе требование javax относительно числовых ограничений j2se усложняет ситуацию. Если javax вы не разрешили только очень regexp простые ограничения, я не jre знаю способа кратко выразить openjdk это в регулярном выражении. Если regular-expression есть такой способ, не обращайте oraclejdk внимания на остальную часть parsers моего ответа и следуйте другим perl-regex предложениям здесь. :)

Вы jdk можете подумать о генераторе regularexpression синтаксического анализатора parsers - например, классическом parsers lex и yacc. Я не очень хорошо regex знаком с вариантами Java, но parsing вот их список:

http://java-source.net/open-source/parser-generators

Если вы не parser знакомы, стандартный подход regularexpression - сначала создать lexer, который regex превращает ваши строки в javax токены. Затем вы передадите regular-expression эти токены синтаксическому regular-expression анализатору, который применит jre к ним вашу грамматику и выдаст regular-expressions какой-то результат.

В вашем openjdk случае я предполагаю, что parsing синтаксический анализатор regexp будет сочетать регулярное oraclejdk выражение и дополнительные regularexpression условия. В качестве примера java числового ограничения он regular-expressions может дать вам регулярное j2se выражение \/cal/long/3/4/143:(\d+)\ и ограничение regexp для применения к первой группировке j2se (часть \d+), которая требует, чтобы regularexpression число лежало между 100 и regexp 1100. Затем вы примените jdk RE к вашим строкам для кандидатов regularexpression и примените ограничение к java этим кандидатам, чтобы найти jdk ваши совпадения.

Это довольно parsers сложный подход, поэтому, надеюсь, есть java способ попроще. Надеюсь, это oraclejdk даст вам хоть какие-то идеи.

java

regex

parsing

2022-05-20T06:54:07+00:00