RegExp:要查找所有不以“结束”结尾的链接;。html";

RegExp:要查找所有不以“结束”结尾的链接;。html";,regex,notepad++,negative-lookbehind,negative-lookahead,Regex,Notepad++,Negative Lookbehind,Negative Lookahead,我是正则表达式的新手(尽管我已经成功地使用了很多次)。 我想查找文档中所有不以“.html”结尾的链接 我想到的正则表达式是: href=\"([^"]*)(?<!html)\" 但这也不起作用 有人能帮忙吗 干杯,grovel编辑:记事本++使用SciTE正则表达式引擎,不支持环视表达式 有关更多信息,请查看此处 原始答案 ^.*(如果您使用PERL或PCRE(例如PHP中的preg_匹配),则正则表达式可以正常工作。但是,大多数正则表达式引擎(尤其是更简单的正则表达式引擎,如记事本

我是正则表达式的新手(尽管我已经成功地使用了很多次)。 我想查找文档中所有不以“.html”结尾的链接 我想到的正则表达式是:

href=\"([^"]*)(?<!html)\"
但这也不起作用

有人能帮忙吗


干杯,grovel

编辑:记事本++使用SciTE正则表达式引擎,不支持环视表达式

有关更多信息,请查看此处


原始答案


^.*(

如果您使用PERL或PCRE(例如PHP中的preg_匹配),则正则表达式可以正常工作。但是,大多数正则表达式引擎(尤其是更简单的正则表达式引擎,如记事本++所使用的引擎)不支持先行和后顾断言。几乎所有正则表达式引擎都只支持最基本的语法,如量词、子模式和字符类


您可以在以下位置找到notepad++正则表达式引擎的文档:

您可以创建一个regexp来实现此功能,但它可能太复杂了:

href=\"((([^"]*)([^h"][^"][^"][^"]|[^t"][^"][^"]|[^m"][^"]|[^l]))|([^"]|)([^"]|)([^"]|))\"

非常感谢大家

最后,正则表达式确实不起作用

我只是使用了一种变通方法,将所有链接替换为+“.html”,然后将所有出现的“.html.html”替换为“.html”

所以我用
href=“\1.html”
替换了
href=\“([^”]*)\”
,然后用
替换了
.html

无论如何,谢谢你,grovel

注意Notepad++(现在?)支持这样的功能。(我有Notepad++6.3,日期为2012年2月3日。)

我相信这意味着两种替换变体使用相同的PCRE方言:

  • 标准:
    Search | Replace
    (默认快捷键
    Ctrl H
  • 插件:
    TextFX | TextFX快速|查找/替换
    (默认快捷键
    Ctrl R

我认为Notepad++只是不支持look-behind断言。试图让regex使用Notepad++实在是太难看了。我放弃了,因为有太多恼人的限制。文档令人困惑,因为它有一个关于lookarounds的部分,似乎表明它们是受支持的。
href=\"((([^"]*)([^h"][^"][^"][^"]|[^t"][^"][^"]|[^m"][^"]|[^l]))|([^"]|)([^"]|)([^"]|))\"