Notepad ++多行正则表达式

时间:2012-12-18 13:49:03

标签: regex notepad++

我在这里链接了数百个类型的文件: http://pastebin.com/fGgLfZf8

但我想删除占用多行的所有注释 例如。

<!--- MPU ---> 

应保持不变,而

<!--
************
blablabla
************
-->

应该删除。

我知道Notepad ++功能通过regexp查找多个文档,我试着使用它,但是我有一些困难。 首先,我正在尝试这个正则表达式:

<\!\-\-(.*?)\-\->

在这里进行了测试:http://www.regextester.com/至少部分工作(因为它突出了刚刚在线发表的评论) 但是,如果我在Notepad ++上复制并粘贴此正则表达式,它将只匹配单行注释= \

有人知道如何在Notepad ++中执行此操作吗?

4 个答案:

答案 0 :(得分:30)

在“搜索模式”中的“正则表达式”选项旁边有一个“匹配换行符”复选框(根据@glatapoui,应该注意这只适用于Notepad ++ v6,而不是以前的版本)。

enter image description here

答案 1 :(得分:2)

此表达式<!--.+?(?<=[\*\r\n])-->也仅在Notepad ++中匹配多行注释。

答案 2 :(得分:0)

<!--[*a-zA-Z\r\n]*-->

这个似乎只在记事本++中采取多行注释

编辑: 小错误:空格是这个问题的一个问题。 你可以试试 <!--[\r\n]{1}[* a-zA-Z\r\n]*-->

答案 3 :(得分:0)

捕获多行文本的另一种方法是使用表达式:

<!---([\S\s]+?)--->

\ S +匹配所有无空格符号,
\ s +匹配所有空格符号(包括\ r \ n \ t)。

它可能适用于记事本++,否则也可以...

编辑: 乍一看,我没有注意到问题是捕获并仅删除多行注释(单行注释除外)。 我发现了两次迭代的方法。 首先,我们需要查找并替换以下内容

<!—-(?:(?!.*—->)[\s\S]+?—->|)

这将捕获所有多行注释和单行注释的前缀。 然后,我们需要恢复丢失的单线前缀:

Find:
(.+—->)

Replace:
<!—-\1

它将修复单行注释。 “->”的组合不能出现xml代码,否则不能以注释结尾。