我有以下正则表达式
'\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正则表达式转换为findite正则表达式?
我需要使用finditer
这样的结果,例如使用findall
。
TL;博士
我想要提取数字而不是其他字符。
答案 0 :(得分:2)
finditer
返回匹配对象,可以使用.group
方法从中提取组。这就是人们通常使用正则表达式的方式,findall
直接返回组中的字符串或元组是不常见的。
import re
text = '''Data:
4532394639182605 sadada 4716759060363635 assasasas
dsdsd 4539072249615668 jdhsjhdj
ABCD'''
regex = re.compile('\D*(\d{13,19})\D*')
for match in regex.finditer(text):
print(match.group(1))