Python正则表达式匹配Avg Time行时无法捕获数值后内容怎么解决?
正则调整方案
调整后的正则写法
你可以使用以下两种正则实现目标匹配需求:
- 通用匹配写法(适配中间空格、字符长度不固定的场景)
result = re.compile(r'RESULT: Avg Time:.*?\(\d+\.\d+')
- 精准匹配写法(匹配稳定性更高,不会出现误匹配)
result = re.compile(r'RESULT: Avg Time:\s+\d+\.\d+us\s+\(\d+\.\d+')
原正则的问题说明
你原有写法 r'RESULT: Avg Time:.*\(\d*\.\d*' 存在两个可优化点:
.*是贪婪匹配规则,会尽可能向后匹配最长的符合规则的内容,容易出现匹配截断\d*允许匹配0个数字,边界规则太宽松,在部分场景下会提前终止匹配
另外你需要注意:匹配完成后必须调用 .group() 方法才能拿到完整的匹配结果,直接打印match对象会因为默认输出规则被截断内容,不要把输出截断误以为是匹配不全。
完整测试示例
import re string = "RESULT: Avg Time: 53.49402644us (2336.71 MB/s)" result = re.compile(r'RESULT: Avg Time:.*?\(\d+\.\d+') result_match = result.search(string) if result_match: print(result_match.group())
运行后输出的结果完全符合你的预期:
RESULT: Avg Time: 53.49402644us (2336.71
内容的提问来源于stack exchange,提问作者Nour
相关产品推荐
相关产品推荐

