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 rereg="\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']另外,如果我想要数字前的两个单词,我该如何提取?即acc编号是1234 5678等。
3 回答

哈士奇WWW
TA贡献1799条经验 获得超6个赞
要获得完整结果,您可以使用以下正则表达式:
(?:\d+[ $%./-]?)+
它捕获可能由单个连续数字分隔符分隔的数字序列。这捕获日期,以单个空格作为分隔符thundreds和货币/百分号的数字,但将避免匹配1. 2
在sentence 1. 2nd sentence
和叶的可能性,使用倍数空格分开的数字。
要包括前两个词,您可以使用这个词:
[^\d ]+ [^\d ]+ (?:\d+[ $%./-]?)+
在继续之前的正则表达式之前,它只捕获两个由空格分隔的非数字字符序列。
(注意账号的情况下,只会捕获“no is”)

郎朗坤
TA贡献1921条经验 获得超9个赞
如果您希望单独匹配,可以使用此正则表达式代码
\d{1,2}[/\s\.-]\d{1,2}[/\s\.-](\d{2}|\d{4})\b|\d{2,4}[.]\d{1,4}[%]|\d{1,5}[$]|\d{1,4}[-]\d{1,8}[-]\d{1,4}[-]\d{1,8}|\d{1,8}[\s]\d{1,8}
如果您将日期作为 19/05/193 传递,则此代码正确匹配日期,它将不匹配
添加回答
举报
0/150
提交
取消