我必须解析一个PDF文档,我正在使用PyPDF2和re(regex)
该文件包括以下几行:
18-02-202010:44:48PEDMILANO OVEST- BINASCOA1,40
我需要从此行中提取时间和金额之间的文本(粗体):
PEDMILANO OVEST- BINASCOA
下面的代码正在运行,但有时此代码找不到任何内容,因为可以是这些字符之间的数字,例如18-02-202010:44:48PEDMILANO OVE3ST- BINASCOA1,40
regex = re.compile(r'\d\d-\d\d-\d\d\d\d\d\d:\d\d:\d\d\D+\d+,\d\d')
有没有办法在这个正则表达式中包含一个数字
我建议使用
它也可以写成
或者,如果您更喜欢匹配和捕获:
见online Python demo。使用此解决方案,您的数据可以以任何字符开头,并且将包含任何字符(不包括换行字符,因为您的数据位于单行上)
正则表达式详细信息
^
-字符串的开头\d{2}-\d{2}-\d{5,6}:\d{2}:\d{2}
-datetime字符串:两位,-
,两位,-
,五位或六位,:
,两位,:
两位(.*?)
-第1组:除换行符以外的任何零个或多个字符,尽可能少\d+(?:,\d+)?
-一种int/float值模式:1+位后跟可选的,
和1+位序列$
-字符串的结尾李>见regex demo
以下内容应简化当前的正则表达式:
见demo
\d+([A-Z].*?)(?=\d+\,\d+$)
\
:匹配字符:字面上(区分大小写)\d+
:匹配一个数字(等于[0-9]
)+
量词-在一次和无限次之间匹配,尽可能多地匹配,根据需要返回(贪婪)([A-Z].*?)
匹配下面列表中的单个字符[A-Z]
A-Z
a(索引65)和Z(索引90)之间的单个字符(区分大小写).*?
匹配任何字符(行终止符除外)*?
量词-在零次和无限次之间进行匹配,匹配次数尽可能少,根据需要进行扩展(惰性)\d+
匹配一个数字(等于[0-9]
)+
量词-在一次和无限次之间匹配,尽可能多地匹配,根据需要返回(贪婪)\
,匹配字符,字面上(区分大小写)\d+
匹配一个数字(等于[0-9]
)+
量词-在一次和无限次之间匹配,尽可能多地匹配,根据需要返回(贪婪)$
断言行末尾的位置相关问题 更多 >
编程相关推荐