繁体   English   中英

用于检查Not的Java RegEx以特定字符串开头,但包含多个字符串

[英]Java RegEx to Check for Not starts with Specific String but contains multiple Strings

我想匹配,这并不与字符串开头的字符串的邮件Lineline ,但有子TIMEKEEPERCLIENTLAW 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开头的消息,它不检查消息中匹配的子字符串TIMEKEEPERCLIENTLAW 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) -开头不允许整个字Lineline
  • .* -尽可能多的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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM