问题描述
您要查找的是 解析器
,而不是正则表达式匹配项。在您的情况下,我会考虑使用一个非常简单的解析器split()
:
s = "VALUE 100 234 568 9233 119"
a = s.split()
if a[0] == "VALUE":
print [int(x) for x in a[1:]]
您可以使用正则表达式查看输入行是否符合预期格式(使用问题中的正则表达式),然后可以运行上述代码,而无需检查"VALUE"
并知道int(x)
转换将始终成功,因为您已经确认以下字符组均为数字。
解决方法
我想在程序的输出日志上进行正则表达式匹配(在Python中)。日志包含如下几行:
...
VALUE 100 234 568 9233 119
...
VALUE 101 124 9223 4329 1559
...
我想捕获在以VALUE开头的行的第一次出现之后出现的数字列表。即,我希望它返回('100','234','568','9233','119')
。问题是我事先不知道会有多少个数字。
我试图将其用作正则表达式:
VALUE (?:(\d+)\s)+
这与行匹配,但只捕获了最后一个值,所以我得到了(‘119’,)。