我有这样一段文字:
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}) 的情况下,基本上它采用逗号的最新出现?
最佳答案
只需在正则表达式模式的开头添加 [^,].*
即可。模式 [^,].*
表示“非逗号”后跟任何字符任意次数。
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
关于python - 正则表达式:在前瞻断言的最后一场比赛之后直到前瞻断言的第一场比赛之后查找文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69890357/