Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我正在使用 Python 正则表达式分析一些非常大的日志文件。我需要替换日志文件中的每个数字,除了前面有“java:”的数字(日志文件是由 java 程序制作的)。
这意味着,鉴于我们有一句话说:
这是一个虚假的测试线,limit=300 进行了 53 轮,错误在 (Abc.java:417) 等等
应该替换数字 300 和 53,而不是 417。
我按行过滤,需要注意的是,并非所有行都包含java:[number].
java:[number]
我得到的最接近的是((?<!java:)[0-9]+)
((?<!java:)[0-9]+)
大概是怎么回事
那是,当然,此时的比赛,
java: ^
失败了,但是在 _this 点,
java:4 ^
成功,因为确实ava:4不是java:。
ava:4
java:
你只需要在后面添加一个负面的lookbehind,
((?<!java:)(?<![0-9])[0-9]+) ^^^^^^^^^^
所以只考虑“完整”的数字。