在Python中使用正则表达式时,如何提取特定关键字后面的下一行?

2024-05-15 10:07:06 发布

您现在位置:Python中文网/ 问答频道 /正文

我想在匹配关键字total后提取金额495.65。金额在下一行。提前谢谢

总计:(迪拉姆肆佰玖拾陆元陆角伍分)

496.65

致以最良好的祝愿, y批准提案并安排付款,因此我们将向您提供税款 发票

    re.findall('(?<=total :)((.*){2})', string, re.IGNORECASE)

输出为:(迪拉姆肆佰玖拾陆元陆角伍分)


Tags: restring发票关键字金额total总计税款
1条回答
网友
1楼 · 发布于 2024-05-15 10:07:06

您可以匹配total :并通过在匹配行的其余部分后匹配1个或多个换行来捕获组中的值

\bTotal :.*[\r\n]+(\d+(?:\.\d+))\b

解释

  • \bTotal :.*匹配total :和该行的其余部分
  • [\r\n]+匹配1+换行符
  • (\d+(?:\.\d+))捕获组1,将一个数字与可选的小数部分匹配
  • \b单词边界

Regex demoPython demo

示例代码

import re

regex = r"\bTotal :.*[\r\n]+(\d+(?:\.\d+))\b"

test_str = ("Total :(Dirham Four Hundred Ninety Six and Sixty Five fils Only)\n\n"
    "496.65\n\n"
    "Best Regards,\n"
    "y approve the proposal and arrange the payment, accordingly we will provide you the tax\n"
    "invoice .")

print(re.findall(regex, test_str, re.IGNORECASE))

输出

['496.65']

相关问题 更多 >