22

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

但我想删除所有占据多于一行的评论,例如。

<!--- MPU ---> 

应该保持不变,而

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

应该被删除。

我知道 Notepad++ 功能不仅可以使用正则表达式查找文档,而且我正在尝试使用它,但我遇到了一些困难。首先,我正在尝试这个正则表达式:

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

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

有人知道如何在 Notepad++ 中做到这一点吗?

4

5 回答 5

45

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

在此处输入图像描述

于 2012-12-18T14:03:59.287 回答
4

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

于 2013-04-25T19:43:33.337 回答
1

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

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

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

它适用于记事本++,也许,否则也......

编辑: 乍一看,我没有注意到问题是只捕获并删除多行注释,不包括单行注释。我找到了两次迭代的方法。首先,我们需要在文本之后查找并替换为空

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

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

Find:
(.+—->)

Replace:
<!—-\1

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

于 2020-07-31T20:07:38.227 回答
0

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

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

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

于 2012-12-18T14:14:09.797 回答
0

如果它是单个文档,一个简单的技巧是将行尾转换为 Unix 。

菜单:[Edit] -> [EOL Conversion] -> [Unix]

然后只需使用简单的\n来检测表达式中的换行符。

这样您就不必更改从某些在线正则表达式构建器构造/复制的表达式。

注意:不要忘记将行尾切换回 Windows,以防万一。

于 2022-02-09T11:43:55.627 回答