【问题标题】:What's wrong with negative lookahead? Python regex负前瞻有什么问题? Python 正则表达式
【发布时间】:2018-09-06 06:48:40
【问题描述】:

我需要解析来自 html 的链接,但其中的链接后面没有 'class="mw-disambig"'。我写了正则表达式

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

但它仍然会解析这样的东西

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

原始html:

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

不应该加还是没看懂?

我做错了什么?

【问题讨论】:

标签: python html regex parsing


【解决方案1】:

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

因此,当负前瞻阻止最短匹配时,将尝试下一个较长的匹配,以 class= 后面的引号结束。那里不会触发负前瞻。

如果您只想匹配不包含引号的带引号的字符串,请明确:

"[^"]*"

(匹配引号、引号以外的任意数量的字符以及结束引号)。

【讨论】:

    猜你喜欢
    • 2018-04-03
    • 1970-01-01
    • 2018-12-28
    • 2012-04-14
    • 1970-01-01
    • 2021-10-11
    • 2011-10-14
    • 2010-12-17
    • 1970-01-01
    相关资源
    最近更新 更多