输入字符串:
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)
...