找'字'后面没有'@'

时间:2015-07-03 08:05:14

标签: regex

搜索word符号后面没有@符号的正则表达式是什么?

例如:

mywordLLD         OK
myword.dff        OK
myword@ld         Exclude

1 个答案:

答案 0 :(得分:44)

此处需要(?!@)否定look-ahead

word(?!@)

请参阅demo

此正则表达式匹配word子字符串和(?!@),确保其后面没有@,如果它在那里,word不会返回匹配(即匹配失败)。

来自Regular-expressions.info

  

否定前瞻是必不可少的,如果你想匹配其他东西没有的东西。在解释character classes时,本教程解释了为什么您不能使用否定字符类来匹配q后跟u。否定前瞻提供了解决方案:q(?!u) 。负前瞻构造是括号对,左括号后跟一个问号和一个感叹号

Character classes页面上:

  

重要的是要记住,否定的字符类仍然必须与字符匹配。 q[^u]并不代表:“q后面没有u”。这意味着:“一个q后跟一个不是u的字符”。它与字符串q中的Iraq不匹配。它确实匹配q和伊拉克q之后的空格。确实:空间成为整体匹配的一部分,因为它是“不是u”的字符,与上述正则表达式中的否定字符类相匹配。如果您希望正则表达式与两个字符串中的qq匹配,则需要使用否定前瞻q(?!u)