匹配数字前面没有字符串

时间:2013-10-29 09:53:26

标签: python regex

我正在使用Python正则表达式分析一些非常大的日志文件。 我需要替换日志文件中的每个数字,除了前面带有'java:'的数字(日志文件是由java程序生成的)。

这意味着我们有一句话说:

  

这是一个伪造的测试线,限制= 300次做53轮,错误在(Abc.java:417)还有一些

应替换数字300和53,但不应替换为417.

我按行进行过滤,应注意并非所有行都包含java:[number]

我得到的最接近的是((?<!java:)[0-9]+)

1 个答案:

答案 0 :(得分:4)

可能发生了什么

((?<!java:)[0-9]+)

肯定是点的匹配,

java:
     ^

失败,但接着是_this,

java:4
      ^

成功,因为ava:4确实不是java:

你只需要添加一个负面的lookbehind,

((?<!java:)(?<![0-9])[0-9]+)
           ^^^^^^^^^^

以便只考虑“完整”数字。