python - 正则表达式:在前瞻断言的最后一场比赛之后直到前瞻断言的第一场比赛之后查找文本

我有这样一段文字:

Hans Wurst, geboren 25.01.1987, zuletzt tätig als Metzger, Breslauer Str. 15, 02708 Löbau

我想从中获取街道名称(“Breslauer Str. 15”)。所以我使用了如下所示的正则表达式:

(?<=, )(.+?)(?=,[\s]?[0-9]{5})

但是这是贪心的,并且匹配:

geboren 25.01.1987, zuletzt tätig als Metzger, Breslauer Str. 15

我怎样才能使它不那么贪婪,以便在考虑先行断言 (?=,[\s]?[0-9]{5}) 的情况下,基本上它采用逗号的最新出现?

最佳答案

只需在正则表达式模式的开头添加 [^,].* 即可。模式 [^,].* 表示“非逗号”后跟任何字符任意次数。

RegEx Demo

Python 演示:

import re

s = 'Hans Wurst, geboren 25.01.1987, zuletzt tätig als Metzger, Breslauer Str. 15, 02708 Löbau'
m = re.search(r'[^,].*(?<=, )(.+)(?=,[\s]?[0-9]{5})', s)
if m:
    print(m.group(1))

输出:

Breslauer Str. 15

https://stackoverflow.com/questions/69890357/

相关文章:

ios - 是否有修改器可以更改 SwiftUI Picker 的标签颜色?

c++ - 从 std `vector` 库创建的 `` 和从 : `STL vec

angular - TS2322 : Type 'HTMLDivElement' is not as

java - 如何将具有相同键但不同值的多个 map 合并为一个 map

powershell - 设置 PSReadLineOption : A parameter can

python - 检查文件夹,如果不存在则创建它

python - 如何检查字符串中的特定元素在python中是否相等?

tailwind-css - 如何使用 Tailwind CSS 定位具有特定数据属性的元素?

regex - 如何在 perl regex 替换命令中使用 unicode 字符?

python - 无法让 VS Code 将参数从 launch.json 传递给 Python