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