6

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

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

这是一个虚假的测试线,limit=300 进行了 53 轮,错误在 (Abc.java:417) 等等

应该替换数字 300 和 53,而不是 417。

我按行过滤,需要注意的是,并非所有行都包含java:[number].

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

4

1 回答 1

4

大概是怎么回事

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

那是,当然,此时的比赛

java:
     ^

失败了,但是在 _this 点,

java:4
      ^

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

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

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

所以只考虑“完整”的数字。

于 2013-10-29T10:02:38.280 回答