如何否定正则表达式中的@符号

时间:2017-01-09 23:45:53

标签: regex

我有一个我想要检查的文件。大多数数字都在他们面前。我想找到所有没有@前面的数字。他们可能有空间,或者他们可能有另一个角色。我不确定,因为我还没有找到它们。

所以对于这个文本

  

First @ 30 line

     

Second @ 40 line

     

找到四条a4线

我想找到" 4"。与" a"在最后一行的前面。

这听起来很简单,但是使用RegEx101或Notepad ++我无法执行搜索。

我已尝试[^@]\d+,但也找到了30和40。我尝试[^\@]\d+的结果相同。如果我[^a]\d+它正确找不到" a4"。很明显@符号具有一些特殊意义,但我找不到任何关于此的文档。

如何进行此搜索?

1 个答案:

答案 0 :(得分:3)

问题在于3不是@。您正在搜索@以外的任何字符,后跟任意(非零)位数。 3@以外的字符,0是非零数字。因此匹配。

您需要排除数字以及@[^@\d]\d+

注意:这仍然需要数字前的字符。你说你想要的任何数字都不是@之前的数字。如果某个数字位于一行的开头,则不会以@开头。但是,它之前没有任何其他字符,因此您需要调整正则表达式才能匹配。

负面的背后隐喻适用于此:(?<![@\d])\d+。这会查找\d+,除非前面有@或其他数字。