如何将正则表达式与具有未知组数的分组匹配

发布于 2021-01-29 18:22:53

我想在程序的输出日志上进行正则表达式匹配(在Python中)。日志包含如下几行:

... 
VALUE 100 234 568 9233 119
... 
VALUE 101 124 9223 4329 1559
...

我想捕获在以VALUE开头的行的第一次出现之后出现的数字列表。即,我希望它返回('100','234','568','9233','119')。问题是我事先不知道会有多少个数字。

我试图将其用作正则表达式:

VALUE (?:(\d+)\s)+

这与行匹配,但只捕获了最后一个值,所以我得到了(‘119’,)。

关注者
0
被浏览
53
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    您要查找的是 解析器
    ,而不是正则表达式匹配项。在您的情况下,我会考虑使用一个非常简单的解析器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)转换将始终成功,因为您已经确认以下字符组均为数字。



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看