【发布时间】:2017-01-06 14:25:34
【问题描述】:
我有以下正则表达式
'\D*(\d{13,19})\D*'
我想从以下文本中提取数字:
Data:
4532394639182605 sadada 4716759060363635 assasasas
dsdsd 4539072249615668 jdhsjhdj
ABCD
当我通过调用使用这个正则表达式时:
regex = re.compile('\D*(\d{13,19})\D*')
a = regex.finditer(text)
b = regex.findall(text) #Yield correct result
结果不同 - 我想要来自 findall 的结果。我知道finditer 匹配组。但是如何将我的 findall 正则表达式转换为 finditer 正则表达式?
我需要使用 finditer 获得相同的结果,例如使用 findall。
tl;dr
我想提取数字而不是其他字符。
【问题讨论】:
-
finditer返回一个与列表不同的迭代器。当您迭代a和b时,您会得到不同的结果吗? -
只有我感兴趣的东西是输出——我想提取数字。是的结果不同
-
@user902691 你的问题不清楚。你想达到什么目的?请在问题中包含完整的上下文。你想让
finditer表现得像findall是没有意义的。 -
@MYGz 我只想使用
finditer从文本中提取数字。我需要更改我的正则表达式,当前的正则表达式仅在findall中像魅力一样工作。 -
@user902691
finditer也可以像魅力一样工作,只需对其进行迭代。[x.group(0) for x in a]
标签: python regex python-2.7