python - 或最后一个词在单个正则表达式中的条件不起作用python
问题描述
我正在将 pdf 银行对帐单转换为文本文件并逐行读取文本文件并使用正则表达式将交易转换为 JSON 格式。现在在文本中进行交易,一些交易的金额在同一行,而一些交易的金额在不同的行。想写一个可以区分两行的正则表达式。下面给出了输入字符串,我一一得到。
15/08/2019 UPI/922722731244/PAYMENT
01/08/2019 MAB CHARGES FOR JUN19 4.94
尝试的正则表达式是
\s*(?P<'+DATE_STR+'>\d{2}/\d{2}/\d{4})\s+(?P<'+DESCRIPTION_STR+'>[\s\S\d\D\w\W]*)\s(?P<'+AMOUNT_STR+'>([\d.-]+))
我希望 AMOUNT_STR 的输出处于或状态,结果应该是这样的。
我想要一个应用于第一个语句的单个正则表达式将输出作为 DATE_STR = '15/08/2019 ' DESCRIPTION_STR = 'UPI/922722731244/PAYMENT' (对于第一个字符串)
,当应用于第二个语句时,输出为
DATE_STR = '01/08/2019' DESCRIPTION_STR = '19 月的 MAB 费用' AMOUNT_STR= '4.94'
解决方案
终于得到了解决方案。在正则表达式中,AMOUNT_STR 正则表达式在条件下最后用“。”检查数字。(点)因为金额可以包含“,”(逗号)所以我使用的正则表达式是
\s*(?P<' + DATE_STR + '>\d{2}/\d{2}/\d{2})\s(?P<' + DESCRIPTION_STR + '>(. ?)(?= \d+\, \d*.\d+|$))(?P<' + AMOUNT_STR + '>\d+\, \d .\d+)*
推荐阅读
- spring - Spring Security 中已弃用的 AuthorizationServer 的替代品是什么?
- reactjs - react-360 中的响应式平板
- rest - 如何在docusign中获取模拟的UserGuid Id
- php - 如何将新的命名个人添加到 XML/RDF owl 文件?
- apache - 为什么 AEM 调度程序拒绝连接?
- angular - 在 Angular Firestore 中引用文档上的字段
- python - 根据两个条件求平均值;从这些平均值创建列
- node.js - 在多个网站之间共享令牌以防止在每个网站中登录
- python-3.x - “GetProfiles”不适用于我的 ONVIF 相机
- reactjs - 未捕获的类型错误:sweetalert2_react_content_1.default 不是函数