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