首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java :匹配任何单词,并且必须包含特定的工作,但只有一个单词除外

Java :匹配任何单词,并且必须包含特定的工作,但只有一个单词除外
EN

Stack Overflow用户
提问于 2019-01-08 02:01:25
回答 2查看 127关注 0票数 1

我需要一个Java正则表达式来匹配除某个单词之外的任何单词,同时包含另一个单词。

例如,字符串不能包含Apple,但必须具有Peach

代码语言:javascript
复制
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不能出现在字符串中。

到目前为止我已经有了这个密码。

代码语言:javascript
复制
^(?!(?:Apple)$)Peach$
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-01-08 02:22:07

如果要匹配整个句子,应使用以下正则表达式:

代码语言:javascript
复制
^(?!.*Apple).*Peach.*$

演示: https://regex101.com/r/G6RdPO/2/

此外,如果情况与此无关,则可以将regex更改为:

代码语言:javascript
复制
(?i)^(?!.*Apple).*Peach.*$

最后但并非最不重要的一点是,您的问题中还不清楚如何使用peachesapplespineapples (包含apple)。如果您不想将它们考虑在内,请使用:

代码语言:javascript
复制
(?i)^(?!.*\bApple\b).*\bPeach\b.*$

演示: https://regex101.com/r/G6RdPO/5

代码语言:javascript
复制
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

如果你也想把它们的复数考虑在内:

代码语言:javascript
复制
(?i)^(?!.*\bApple(?:s)?\b).*\bPeach(?:es)?\b.*$

演示: https://regex101.com/r/G6RdPO/4

代码语言:javascript
复制
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
票数 2
EN

Stack Overflow用户

发布于 2019-01-08 02:07:21

您应该使用.*来匹配从字符串开始到要查找的关键字之间的任何字符:

代码语言:javascript
复制
^(?!.*Apple).*Peach

演示:https://regex101.com/r/t3Dz4E/1

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54084335

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档