gpt4 book ai didi

python - re.findall 不匹配所有匹配项

转载 作者:太空宇宙 更新时间:2023-11-04 10:18:45 25 4
gpt4 key购买 nike

我需要解析一个大文本文件来寻找这样的模式:

string='Path Group: sclk ;djlasfhv slack 5t45545 545 (VIOLATED)    -0.8568      Path Group: sclk ;djlasfhv slack (VIOLATED)       -0.88 Path Group: sclkasfhv slack (VIOLATED)                -0.121'
violation = re.findall('Path Group: sclk.*VIOLATED\)\s*(-[0-9]\.[0-9]+)', string)

这只打印最后一个 -0.121。我期待 [-0.8568, -0.88, -0.121]

附言我刚刚在这里给出了一个示例字符串。实际文件非常大。我正在查找正则表达式中字符串后的所有 -ve 数字。

我犯了什么错误?

最佳答案

使其非贪婪。 .* 出现在你的正则表达式中是贪婪的,它尽可能匹配所有字符。所以这将匹配所有并且 -[0-9]\.[0-9]+ 模式应该捕获最后一个数字。

violation = re.findall(r'Path Group: sclk.*?VIOLATED\)\s*(-[0-9]\.[0-9]+)', string)
^

示例:

>>> import re
>>> string='Path Group: sclk ;djlasfhv slack 5t45545 545 (VIOLATED) -0.8568 Path Group: sclk ;djlasfhv slack (VIOLATED) -0.88 Path Group: sclkasfhv slack (VIOLATED) -0.121'
>>> re.findall(r'Path Group: sclk.*?VIOLATED\)\s*(-[0-9]\.[0-9]+)', string)
['-0.8568', '-0.88', '-0.121']

关于python - re.findall 不匹配所有匹配项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33641232/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com