负向后看不匹配

2024-09-29 23:19:56 发布

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

考虑到text = "car price is $2017 and manufactured in 2017 and make is Honda",我正在尝试编写一个与第二个2017年(制造年)匹配的正则表达式。为此,我使用了负的lookback模式,但是匹配的字符串总是第一个。你知道吗

我使用的代码是re.search('(?<!\$)2017', text).group(),也使用了re.search('(?<!$)2017', text).group()(没有\),但没有成功。你知道吗

任何关于我做错了什么的指示。你知道吗


Tags: and字符串textinresearchmakeis
2条回答

不需要负的lookback来匹配2017的第二个实例。你知道吗

您可以使用非贪婪量词:

^.*?2017.*?(2017)

RegEx Demo

二审在一组抓获

代码:

>>> str = 'car price is $2017 and manufactured in 2017 and make is Honda'
>>> print re.findall(r'^.*?2017.*?(2017)', str)
['2017']

您缺少的是r,它表示原始字符串

>>> re.search(r'(?<!\$)2017', text).group()
'2017'

加上它,你的代码就行了。你知道吗

相关问题 更多 >

    热门问题