如何匹配行的开始和结束与特定文本
How to match line start and ending with specific text
我很难使用这个正则表达式。我正在尝试匹配以“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
它应该只包括最后一个数字,而不是整行。有谁知道这是如何实现的?
pattern = r"([\d,]*) CHF$"
st = "Zahlbetrag 0,00 13,25 906,80 CHF"
result = re.search(pattern, st)
result[1]= '906,80'
您可以使用
Zahlbetrag.*?\K\d+,\d{2}(?=\s*CHF)
参见regex demo。 详情:
Zahlbetrag
- 文字字符串
.*?
- 除换行字符外的零个或多个字符,尽可能少
\K
- 省略目前匹配的文本
\d+
- 一位或多位数字
,
- 逗号
\d{2}
- 两位数
(?=\s*CHF)
- 匹配一个位置的正向前瞻,紧接着是零个或多个空格,然后是 CHF
.
我很难使用这个正则表达式。我正在尝试匹配以“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
它应该只包括最后一个数字,而不是整行。有谁知道这是如何实现的?
pattern = r"([\d,]*) CHF$"
st = "Zahlbetrag 0,00 13,25 906,80 CHF"
result = re.search(pattern, st)
result[1]= '906,80'
您可以使用
Zahlbetrag.*?\K\d+,\d{2}(?=\s*CHF)
参见regex demo。 详情:
Zahlbetrag
- 文字字符串.*?
- 除换行字符外的零个或多个字符,尽可能少\K
- 省略目前匹配的文本\d+
- 一位或多位数字,
- 逗号\d{2}
- 两位数(?=\s*CHF)
- 匹配一个位置的正向前瞻,紧接着是零个或多个空格,然后是CHF
.