Regex для всего, кроме определенного символа, которому не предшествует строка - PullRequest
0 голосов
/ 10 июня 2018

Мне не повезло, когда я собирал вместе регулярное выражение, которое обрабатывает все, кроме определенного символа, которому не предшествует конкретная строка

Например, эта строка:

Mr. Jones likes fish.

Должно совпадать так:

Mr. Jones likes fish

А не, например:

Mr

Я думаюэто должно быть действительно легко, но это просто не сработает.У меня уже есть работа для получения правильного соответствия на точке:

(?<!Mr)\.

Дополнительное совпадение не будет работать, хотя.Я попробовал это:

(?<!Mr)[^.]*

Потому что я думал, что курсор будет на точке в этой точке и вижу, что он был обработан «Мистером», и он не будет совпадать.Но это так.

И что-то вроде этого:

(^((?<!Mr).))*

Но взгляд в этом регулярном выражении больше не распознается как единое целое, и он просто пытается сопоставить каждый символ.

Я уже видел этот ответ, но я не мог найти ничего, что помогло бы мне там.

1 Ответ

0 голосов
/ 10 июня 2018

Как мне показалось, вы хотите сопоставить любой символ, кроме ., за исключением того, что периоду предшествует Mr, чтобы вы могли использовать чередование (или необязательную группу) и lookbehind .

(?:[^.]+|(?<=Mr)\.)+

в виде строки Java: "(?:[^.]+|(?<=Mr)\\.)+"

Вот демонстрационная версия в regex101 (не Java)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...