为了账号安全,请及时绑定邮箱和手机立即绑定

正则表达式提取具有不同长度和特殊字符的所有数字

正则表达式提取具有不同长度和特殊字符的所有数字

翻翻过去那场雪 2021-06-07 21:08:54
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. 2sentence 1. 2nd sentence和叶的可能性,使用倍数空格分开的数字。

要包括前两个词,您可以使用这个词:

[^\d ]+ [^\d ]+ (?:\d+[ $%./-]?)+

在继续之前的正则表达式之前,它只捕获两个由空格分隔的非数字字符序列。

(注意账号的情况下,只会捕获“no is”)


查看完整回答
反对 回复 2021-06-15
?
郎朗坤

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 传递,则此代码正确匹配日期,它将不匹配


查看完整回答
反对 回复 2021-06-15
  • 3 回答
  • 0 关注
  • 281 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号