Мне нужна помощь с этим регулярным выражением. У меня есть строки разной длины, и вы хотите соответствовать только началу. У строк есть символы новой строки, поэтому кажется, что \ A - путь.Java regex " A" border match
Я хочу, чтобы регулярное выражения, которое будет соответствовать всем следующим случаям:
OPTIONAL: [any whitespace/newlines/etc]
OPTIONAL: <?.*?>
OPTIONAL: [any whitespace/newlines/etc]
MANDAORY: <lemon>
OPTIONAL: anything afterwards.
Поскольку струны могут получить огромные, окончательное Дополнительное согласование делает это крайне медленно.
Мое первое решение было:
"(^\\s*<?.*?>\\s*<lemon>)[\\s\\S]*|(^\\s*<lemon>.*)[\\s\\S]*"
Это крайне запутанным и сопоставляется со всей строкой, а не только в начале
Мой текущий лучший попробовать это:
"\\A(?:\\s*<?.*?>)?\\s*<lemon>"
Однако это не работает, если есть что-то после mon>
, то матч не удался.
У кого-нибудь есть идеи относительно того, почему? Примеры на \A
являются скудными, и я не могу заставить его работать.
Я не пытаюсь сгруппировать его (или получить то, что соответствует), я просто искал способ, чтобы получить двоичный ответ, похожий на String.matches(), который при находящем матч-сто p, проходящей через строку. если я добавляю a. * (и [\\ s \\ S] *), то он проходит через всю строку и проходит. Я хочу избежать этого и просто получить проход второй, регулярное выражение совпадает с началом ввода. –
Я вижу, см. Мой отредактированный ответ, затем – Tala
Спасибо за ответ; к сожалению, отредактированный ответ не работает, и он проходит через ВСЕ строку ([\\ s \\ S] * является req для работы, но все же чрезвычайно медленным, что было моей начальной проблемой) –