Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 如何在正则表达式中对模式进行分组?_Regex_Python 2.7 - Fatal编程技术网

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

Regex 如何在正则表达式中对模式进行分组?,regex,python-2.7,Regex,Python 2.7,如何获取文本状态后显示的所有数字(2xx或3xx或4xx或全部)? 还是有其他方法可以提取这些序列 我们能在正则表达式中处理类似([2xx | 3xx | 4xx])的东西吗?这可能不正确,但有人在这里帮助我。一个选项使用正则表达式提取CSV数据,然后用逗号拆分字符串以获得单独值的列表 str="status 2xx" str="status 2xx,3xx" str="status 2xx,3xx,4xx" str="status blahblahblah" # should not ma

如何获取文本状态后显示的所有数字(
2xx或3xx或4xx或全部)?
还是有其他方法可以提取这些序列


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

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

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.
输出:

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

@Gurman:在您的示例中,第三种情况只有两种模式。我能在一组中提取所有这些序列吗?谢谢你的向下投票。但这个问题是不正确的还是不可回答的?你们的问题可能会更清楚。你是什么意思(2xx或3xx或4xx或全部)?@CalvinTaylor感谢您的回复,xx仅表示xx。无其他数字。2xx,3xx,4xx,这就是我强调的模式!!!希望你明白了。你是对的,但这是最简单的方法。我们能用正则表达式处理吗?*代表一切。如果序列不存在怎么办?迪塞尔库马尔:我想我的答案很简单。如果您的输入数据与上面显示的非常不同,那么您应该包含它。我怎么能猜出你的源数据是什么?@Diesel我更新了我的答案,现在只有当字符串与你的模式匹配时,它才会返回一个数字列表,否则它会返回空列表。它与你给出的字符串匹配,而不是问到的字符串。模式为2xx、3xx等。这不适用于该模式。@DieselKumar,可能存在输入字符串
str=“status 1x 2xx、3xx、4xx 5x 6x、7xy”
['123', '456', '555', '789']