正则表达式如果包含单词'ABC'选择,如果包含'EFG',即使它包含'ABC'也不要选择

时间:2017-12-13 12:02:28

标签: java regex

需要正则表达式

Abc您的请求已获批准。

在上述陈述中,如果“已批准”一词出现在句子中,则应选择整句。

先生。 Abc您的请求已获批准。

如果“先生”这个词出现在句子中,即使它包含“已批准”字样,也不应选择一个句子。

3 个答案:

答案 0 :(得分:2)

((?!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

答案 1 :(得分:1)

这应该这样做

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

它会选择那些Mr开头的行,但 里面的单词Approved(它可以或者不在最后)

工作示例here

答案 2 :(得分:0)

也许这个正则表达式可以帮助你^(?i)((?=\bApproved\b).)*((?!\bMr\b).)*$

'

如果您使用:

String approved = "Abc your request is Approved.";
String notApproved = "Mr. Abc your request is Approved.";
String regex = "(?i)((?=\\bApproved\\b).)*((?!\\bMr\\b).)*";

输出

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