如何在正则表达式中对模式进行分组?

时间:2017-10-07 06:56:05

标签: regex python-2.7

str="status 2xx"
str="status 2xx,3xx"
str="status 2xx,3xx,4xx"
str="status blahblahblah"   # should not match this

import re
if re.match('status\s+(\dxx)',str):
    print "TRUE"  # This matches only first condition.

如何获取文本状态后出现的所有数字(2xx or 3xx or 4xx or all)? 或者是否有其他方法来提取这些序列?

我们可以处理正则表达式([2xx | 3xx | 4xx])吗?这可能不正确,但有人在这里帮助我。

1 个答案:

答案 0 :(得分:1)

一个选项使用正则表达式提取CSV数据,然后在逗号上拆分字符串以获取单独值的列表。

str = "status 123,456    555 789"
m = re.search('^status\s+([0-9]+(?:(?:\s+|,)[0-9]+)*)$', str)

if m:
    nums = m.group(1)
    vals = filter(None, re.split("[, ]+", nums))
else:
    vals = list()

print vals

<强>输出:

['123', '456', '555', '789']

Demo