消极前瞻有什么问题?Python正则表达式

2024-03-29 13:39:03 发布

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

我需要从html解析链接,但是那些链接后面没有'class=“mw disambig”'。我写了regexp

r'<a href="(.+?)"(?! class="mw-disambig")'

但它仍然解析类似这样的东西

  'https://ru.wikipedia.org/wiki/Тюльпан_(значения)" class='

原始html:

<a href="here was link" class="mw-disambig" title="Тюльпан"...>

不应该加上还是我不明白?你知道吗

我做错了什么?你知道吗


Tags: httpsorghere链接htmlruwikilink
1条回答
网友
1楼 · 发布于 2024-03-29 13:39:03

".*?"并不意味着“精确匹配引号中包含的最短序列。它的意思是“匹配引号中包含的最短序列,其中下列字符与模式的其余部分匹配”。你知道吗

因此,当负的lookahead阻止最短的匹配时,将尝试下一个较长的匹配,以class=后面的引号结束。在那里,负面展望不会触发。你知道吗

如果只想匹配不包含引号的带引号字符串,请显式执行以下操作:

"[^"]*"

(匹配引号、引号以外的任意字符数和右引号)。你知道吗

相关问题 更多 >