Java Regex: соответствует любому слову слова и должен содержать определенную работу, но за исключением одного слова - PullRequest
0 голосов
/ 08 января 2019

Мне нужно регулярное выражение Java, чтобы сопоставить любые слова, кроме определенного слова, и в то же время содержать другое слово.

Например, строка не может содержать Apple, но должна иметь Peach.

Apple and Peach - Not match
Peach and Apple- Not match
Peach - Match 
Three Peach - Match 
Peach is good - Match 
Peach is good, but Apple is bad - Not match

т.е. Apple и Peach не могут появляться в строке.

У меня пока есть этот код.

^(?!(?:Apple)$)Peach$

Ответы [ 2 ]

0 голосов
/ 08 января 2019

Вы должны использовать следующее регулярное выражение, если хотите соответствовать всему предложению:

^(?!.*Apple).*Peach.*$

демо: https://regex101.com/r/G6RdPO/2/

Также, если случай не имеет значения, вы можете изменить регулярное выражение на:

(?i)^(?!.*Apple).*Peach.*$

И последнее, но не менее важное: в вашем вопросе неясно, что делать с peaches, apples и pineapples (которые содержат apple). Если вы не хотите принимать их во внимание, используйте:

(?i)^(?!.*\bApple\b).*\bPeach\b.*$

демо: https://regex101.com/r/G6RdPO/5

Apple and Peach - Not match
Peach and Apple- Not match
Peach - Match 
Three Peach - Match 
Peach is good - Match 
Peach is good, but Apple is bad - Not match
Nothing - Not match
Peaches are good - Not match
Apples an Peaches - Not match
Pineapple and Peach - Match

Если вы хотите принять во внимание также их множественное число:

(?i)^(?!.*\bApple(?:s)?\b).*\bPeach(?:es)?\b.*$

демо: https://regex101.com/r/G6RdPO/4

Apple and Peach - Not match
Peach and Apple- Not match
Peach - Match
Three Peach - Match
Peach is good - Match
Peach is good, but Apple is bad - Not match
Nothing - Not Match
Peaches are good - Match
Apples an Peaches - Not match
Pineapple and Peach - Match
0 голосов
/ 08 января 2019

Вы должны использовать .* для сопоставления любых символов между началом строки и ключевым словом, которое вы ищете:

^(?!.*Apple).*Peach

Демо: https://regex101.com/r/t3Dz4E/1

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