正则表达式匹配一个单词,但不匹配另一个单词



我需要一个正则表达式,如果字符串以http://www.xyzabc.com开头,则匹配字符串,但字符串不应包含单词"getJobId"。

例如:

http://www.xyzabc.com/abc          <--- should return true 
http://www.xyzabc.com/getJobId=9   <--- should return false

我尝试使用以下正则表达式:

^(http://www.xyzabc.com)((?!getJobId).)*$

但它没有用。谁能建议?

我只是拿了你的代码并运行了它(删除多余的括号和锚点):

final String regex = "http://www\.xyzabc\.com((?!getJobId).)*";
System.out.println("http://www.xyzabc.com".matches(regex));
System.out.println("http://www.xyzabc.com/abc".matches(regex));
System.out.println("http://www.xyzabc.com/getJobId=9".matches(regex));

指纹

true
true
false

似乎正是你想要的,不是吗?

更新

在您编辑的答案中,您使用的是单反斜杠而不是双反斜杠。

一个

更好的正则表达式是

^(http://www.xyzabc.com)(?!.*?getJobId).*$

(?!.*?getJobId)会检查 getJobId 是否退出,如果退出,那么它将不匹配!

使用此正则表达式http://www.xyzabc.com((?!getJobId)S)*(?=s|$)

http://www.xyzabc.com 淤积常量

((?!getJobId)S)*不包含getJobId,但可以包含符号

(?=s|$)下一个符号空间或匹配项是最后一个单词

最新更新