猿问

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

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']

另外,如果我想要数字前的两个单词,我该如何提取?即acc编号是1234 5678等。


翻翻过去那场雪
浏览 282回答 3
3回答

哈士奇WWW

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

郎朗坤

如果您希望单独匹配,可以使用此正则表达式代码\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 传递,则此代码正确匹配日期,它将不匹配
随时随地看视频慕课网APP

相关分类

Python
我要回答