text1=""" my acc no is 1234 5678.I pay 123$ as an interest @ 14.9% starting from 12/07/19.My debit number is 123-45666-789-112"""
我希望输出包含所有数字,如 1234 5678、123$、14.9%、12/07/19,123-45666-789-112
我尝试运行的代码给出了部分结果。请帮帮我
import re
reg="\d{1,}[^a-zA-Z]?\d{1,}?[^a-zA-Z]?\d?"
gc=re.compile(reg)
number = gc.findall(text1)
print(number)
['1234 567', '123$', '14.9%', '12/07', '19.', '123-456', '66-789', '112']
另外,如果我想要数字前的两个单词,我该如何提取? 即帐户号是 1234 5678 等。
请您参考如下方法:
要获得完整结果,您可以使用以下正则表达式:
(?:\d+[ $%./-]?)+
它捕获可能由单个连续数字分隔符分隔的数字序列。这会捕获日期、带有单个空格的数字作为百分号分隔符和货币/百分号,但会避免匹配 1。 2 in sentence 1. 2nd sentence 并保留使用倍数空格分隔数字的可能性。
要包含前两个词,您可以使用这个:
[^\d ]+ [^\d ]+ (?:\d+[ $%./-]?)+
在继续前面的正则表达式之前,它只捕获两个由空格分隔的非数字字符序列。
(注意,在帐号的情况下,只会捕获“不是”)
