Как сопоставить текст в строке, который не содержит конкретного слова и не содержит слова с буквами и цифрами? - PullRequest
2 голосов
/ 16 июня 2019

Пример 1:

abc defg hi123

В этой строке мне нужно соответствовать defg.

Пример 2:

abc defg hijkl mn123

В этой строке мне нужно соответствовать defg hijkl.

У меня есть первый шаблон, который соответствует тексту, не содержащему «abc»:

\w+\b(?<!\babc)

И у меня есть второй шаблон, который соответствует слову с буквами и цифрами:

(?:\d+[a-z]|[a-z]+\d)[a-z\d]*

Но я думаю, что мне нужно инвертировать второй шаблон, чтобы соответствовать тексту, которыйне содержит слова с буквами и цифрами - пробовал, но безуспешно.Затем, я думаю, мне нужно объединить эти 2 шаблона в одном с "|"(или без него):

pattern 1|pattern 2

1 Ответ

4 голосов
/ 16 июня 2019

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

\b(?!\w*abc)[^\W\d]+\b
  • \b Граница слова
  • (?!\w*abc) Утверждают, что справа не содержится abc
  • [^\W\d]+ Класс отрицательных символов, соответствует 1+ разу слова, кроме цифры
  • \b Граница слова

Regex demo

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