![](/img/trans.png)
[英]How to check for a specific string between multiple strings with regex?
[英]Java RegEx to Check for Not starts with Specific String but contains multiple Strings
我想匹配,这并不与字符串开头的字符串的邮件Line
或line
,但有子TIMEKEEPER
, CLIENT
和LAW FIRM
使用下面的正则表达式
def regEX = "^((?!(Line|line)+).).?(\\bTIMEKEEPER\\b|\\bCLIENT\\b|\\bLAW FIRM\\b|).*\$"
以下是一些示例消息。
Line 1 : Missing required fields //returns false as expected
line 2 : No Delimiter //returns false as expected
PL is not approved TIMEKEEPER //returns true as expected
CLIENT ABC is not authorized //returns true as expected
LAW FIRM address is required //returns true as expected
但是问题是,RegEX上面的内容只匹配所有不以“字符串Line
或“仅line
开头的消息,它不检查消息中匹配的子字符串TIMEKEEPER
, CLIENT
和LAW FIRM
。 ABove RegEX不应与以下消息匹配,但RegEX对于以下消息也返回true,有人可以帮助我修复RegEX以使其与以下消息类型不匹配。
address is required //returns true instead of false
ABC is not authorized //returns true instead of false
您可以使用这样的正则表达式(用斜线定义):
def regEx = /^(?![Ll]ine\b).*\b(TIMEKEEPER|CLIENT|LAW FIRM)\b.*$/
细节
^
-字符串的开头 (?![Ll]ine\\b)
-开头不允许整个字Line
或line
.*
-尽可能多的0个字符 \\b(TIMEKEEPER|CLIENT|LAW FIRM)\\b
- \\b(TIMEKEEPER|CLIENT|LAW FIRM)\\b
中的3个完整单词中的任何一个 .*$
-该行的其余部分。 您是否要匹配所有子字符串TIMEKEEPER,CLIENT和LAW FIRM,或至少一个? 坦率地说,当Java有一个非常好的String#startsWith()
方法时,这似乎是对正则表达式的滥用。 您只是在这里寻找一小部分文字子串。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.