【发布时间】:2022-01-27 16:43:23
【问题描述】:
我很难使用这个正则表达式。我正在尝试匹配以“Zahlbetrag”开头并以“CHF”结尾的行中的金额。
要搜索的文本是:
Zwischentotal 0,00 13,24 906,79 CHF
Zahlbetrag 0,00 13,25 906,80 CHF
到目前为止我的正则表达式:
(?<=Zahlbetrag)(?:.*?)((\d+,\d{2})(?=([\s]*)CHF))
目前的结果是(用https://regex101.com/测试):
Match 1: 0,00 13,25 906,80
Group 1: 906,80
Group 2: 906,80
Group 3:
但我需要第一个匹配项是:
Match 1: 906,80
它应该只包括最后一个数字,而不是整行。有谁知道如何做到这一点?
【问题讨论】:
-
你已经有了它,它在捕获组 2 中,或者稍微更改一下以捕获组 1
Zahlbetrag\b.*?\b(\d+,\d{2})\s*CHF\b请参阅 regex101.com/r/KNRTCs/1(组 1 值以绿色突出显示) -
你想要
Zahlbetrag.*?\K\d+,\d{2}(?=\s*CHF),对吧?见demo。但这是一个 PCRE/Onigmo 唯一的正则表达式。 -
@the-fourth-bird 感谢您的帮助 - 但不幸的是,这对我不起作用,因为我无法访问 group1 - 该软件仅输出第一场比赛。 Wiktor 的解决方案是为我提供所需的输出。所以谢谢你们两个:)