我不希望我的正则表达式在包含.premium-
时与网址匹配。
当然,我在这个论坛和其他人上尝试了很多组合。
最明显的是:
<a[^>]*href="(https://www.example.com/(?!\.premium\-)[^"']+)"[^>]*>
但这不起作用。我该怎么办?
答案 0 :(得分:0)
你非常接近。你错过了O(l)
。负向前瞻被绑定到您将其放置在模式中的位置,因此它不会超过字符串中的确切位置。你需要量化某些东西来告诉它从那个位置看任何地方。
此外,当[^"']*
不在集合中时,您无需转义,因此使用-
就足够了。
\.premium-
我只是将<a[^>]*href="(https://www.example.com/(?![^"']*\.premium-)[^"']+)"[^>]*>
添加到您的负向前瞻的最前端。这样可以确保它在需要时继续,直到满足匹配(在负前瞻中)。