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']