[英]java, regex string not containing a set of word between /
我知道这似乎是一个常见的问题,但是尽管搜索也无法摆脱我的问题。 我需要一个仅与不以指定的单词集开头且由/包围的字符串匹配的正则表达式。 例:
/harry/white
/sebastian/red
/tom/black
/tomas/green
我不希望以/ harry /和/ tom /开头的字符串,所以我希望
/harry/white NO
/sebastian/red YES
/tom/black NO
/tomas/green YES
1) ^/(?!(harry|tom)).* doesn't match /tomas/green
2) ^/(?!(harry|tom))/.* matchs nothing
3) ^/((harry|tom))/.* matchs the opposite
什么是正确的正则表达式? 如果有人向我解释为什么1和2错误,我将不胜感激。 请不要怪我:)谢谢。
您需要在负前瞻而不是外部添加两个结尾的斜杠 :
^/(?!(harry|tom)/).*
不添加斜杠,将匹配tom
中的tom
,并且负tomas
将无法满足。
尝试:
^(?!/(harry|tom)/).*
为什么数字1是错误的:前行应确保在harry
或tom
后面加上斜杠。
为什么数字2是错误的:忽略前瞻; 请注意,该模式试图在字符串的开头匹配两个斜杠。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.