我正在使用Python正则表达式分析一些非常大的日志文件。 我需要替换日志文件中的每个数字,除了前面带有'java:'的数字(日志文件是由java程序生成的)。
这意味着我们有一句话说:
这是一个伪造的测试线,限制= 300次做53轮,错误在(Abc.java:417)还有一些
应替换数字300和53,但不应替换为417.
我按行进行过滤,应注意并非所有行都包含java:[number]
。
我得到的最接近的是((?<!java:)[0-9]+)
答案 0 :(得分:4)
可能发生了什么
((?<!java:)[0-9]+)
肯定是此点的匹配,
java:
^
失败,但接着是_this,
java:4
^
成功,因为ava:4
确实不是java:
。
你只需要添加一个负面的lookbehind,
((?<!java:)(?<![0-9])[0-9]+)
^^^^^^^^^^
以便只考虑“完整”数字。