Java 正则表达式如果包含单词“ABC”,则选择;如果包含“EFG”,则即使包含“ABC”,也不要选择

Java 正则表达式如果包含单词“ABC”,则选择;如果包含“EFG”,则即使包含“ABC”,也不要选择,java,regex,Java,Regex,需要正则表达式 Abc你的请求被批准了 在上面的语句中,若“批准”一词出现在句子中,则应选择整个句子 Abc先生,你的请求被批准了 如果句子中出现“Mr”一词,即使它包含“Approved”一词,也不应选择句子。?!Mr.*匹配不包含Mr.的字符串。。如果你在单词Approved前后检查它,你就完成了 ^((?!Mr.).)*Approved((?!Mr.).)*$ 例如: Abc your request is Approved. -> Match Mr. Abc your reque

需要正则表达式

Abc你的请求被批准了

在上面的语句中,若“批准”一词出现在句子中,则应选择整个句子

Abc先生,你的请求被批准了

如果句子中出现“Mr”一词,即使它包含“Approved”一词,也不应选择句子。

?!Mr.*匹配不包含Mr.的字符串。。如果你在单词Approved前后检查它,你就完成了

^((?!Mr.).)*Approved((?!Mr.).)*$
例如:

Abc your request is Approved. -> Match
Mr. Abc your request is Approved. -> No match
Abc your request is Approved. Mr. -> No match
Abc your Mr. request is Approved. -> No match

也许这个正则表达式可以帮助你

如果您使用:

System.out.println(approved.matches(regex));
System.out.println(notApproved.matches(regex));
输出

true
false
这应该可以

^?!*先生批准*

它将选择那些不以Mr开头的行,但在其中包含单词Approved,可以在末尾,也可以不在末尾


工作示例

请尝试。是什么阻止了你写它?@vinS我正在尝试相同的内容。我不太懂正则表达式,请把正则表达式的模式放在学习上。直接把一个要求作为一个问题提出来,结果一事无成。正如你所看到的,你的问题已经被否决了。顺便说一句,我没有投反对票。最好尝试一些东西并编辑你的问题,以显示你的努力。这可能会有帮助:如果先生在批准后来怎么办?这是真的!,我会查的你可以查我的答案。如果有什么东西不见了,通知我。我想这也不能检查先生是否在批准后出现,嗯?它检查,因为它看到。OP说如果Mr.出现在句子中,不要匹配它。在这个链接中,显示了预期的结果。那么问题是什么呢
true
false