搜索word
符号后面没有@
符号的正则表达式是什么?
例如:
mywordLLD OK
myword.dff OK
myword@ld Exclude
答案 0 :(得分:44)
此处需要(?!@)
否定look-ahead:
word(?!@)
请参阅demo
此正则表达式匹配word
子字符串和(?!@)
,确保其后面没有@
,如果它在那里,word
不会返回匹配(即匹配失败)。
否定前瞻是必不可少的,如果你想匹配其他东西没有的东西。在解释character classes时,本教程解释了为什么您不能使用否定字符类来匹配
q
后跟u
。否定前瞻提供了解决方案:q(?!u)
。负前瞻构造是括号对,左括号后跟一个问号和一个感叹号。
在Character classes页面上:
重要的是要记住,否定的字符类仍然必须与字符匹配。
q[^u]
并不代表:“q
后面没有u
”。这意味着:“一个q
后跟一个不是u
的字符”。它与字符串q
中的Iraq
不匹配。它确实匹配q
和伊拉克q
之后的空格。确实:空间成为整体匹配的一部分,因为它是“不是u
”的字符,与上述正则表达式中的否定字符类相匹配。如果您希望正则表达式与两个字符串中的q
和q
匹配,则需要使用否定前瞻:q(?!u)
。