输入字符串:


  I0419 01:52:16.606123 136 TrainerInternal.cpp:181]通过= 15批次= 74样本= 3670 AvgCost = 263.331评估:classification_error_evaluator = 0.970178 I0419 01:52:16.815407 136 Tester.cpp:115]测试样本= 458成本= 203.737评估:classification_error_evaluator = 0.934446


图案:


  通过=([0-9] +)。* classification_error_evaluator =(0. [0-9] +)。* classification_error_evaluator = [0. [0-9] +)


所需的输出:

(15, 0.970178, 0.934446)


在Regex101(https://regex101.com/r/Hwxsib/1)上,似乎正在捕获正确的模式。

但是在Python中,它与组不匹配,因此没有发现任何问题:

import re

x = "I0419 01:52:16.606123   136 TrainerInternal.cpp:181]  Pass=15 Batch=74 samples=3670 AvgCost=263.331 Eval: classification_error_evaluator=0.970178 I0419 01:52:16.815407   136 Tester.cpp:115]  Test samples=458 cost=203.737 Eval: classification_error_evaluator=0.934446"

pattern = "Pass=([0-9]+).*classification_error_evaluator=(0\.[0-9]+).*classification_error_evaluator=(0\.[0-9]+)"

re.match(pattern, x)


regex101设置与Python re软件包相比有什么区别?还是一样?他们有不同的标志或设置/东西吗?

为什么Python中的模式不匹配?

最佳答案

您可能希望re.search,如果re.match出现在字符串的开头,则仅返回匹配项

regex101还向您显示其使用的代码:https://regex101.com/r/Hwxsib/1/codegen?language=python

从regex101代码开始,这是它的作用(为简便起见,已对其进行复制和编辑):

import re

regex = r"..."

test_str = "..."

matches = re.finditer(regex, test_str)

...

09-25 18:19