Regex 正则表达式与记事本中的换行符不匹配++;

Regex 正则表达式与记事本中的换行符不匹配++;,regex,notepad++,Regex,Notepad++,我正在努力匹配 <!-- Start Comment content spanning several lines here End Comment --> 我想像这样的东西会起作用: (<!-- Start Comment).*(End Comment -->) () 但是与换行符不匹配。如何让它识别包含大量不同字符(包括换行符)的整个块 显然,Notepad++正则表达式是基于行的。它们不能跨越直线。请参见 显然,Notepad++正则表达式是基于行的。

我正在努力匹配

<!-- Start Comment

content spanning several lines here

End Comment -->

我想像这样的东西会起作用:

(<!-- Start Comment).*(End Comment -->)
()
但是
与换行符不匹配。如何让它识别包含大量不同字符(包括换行符)的整个块

显然,Notepad++正则表达式是基于行的。它们不能跨越直线。

请参见


显然,Notepad++正则表达式是基于行的。它们不能跨行。

记事本++似乎不能很好地处理换行。不过,本页有一些创造性的解决方法:


记事本++似乎不能很好地处理换行符。不过,本页有一些创造性的解决方法:


事实上,我已经成功地通过以下方式实现了这一目标:

(?s)BEGINNING-TEXT(.*)FINAL-TEXT
(<!-- Start Comment)((?:\s|.)*)(End Comment -->)

这在记事本++和升华文本中都有效。

事实上,我已经成功地使用类似以下的东西来实现这一点:

(?s)BEGINNING-TEXT(.*)FINAL-TEXT
(<!-- Start Comment)((?:\s|.)*)(End Comment -->)
这适用于记事本++和升华文本。

简单的方法 在搜索之前,只需在Notepad++中选中“.matches newline”。就这样

注意:在一个更复杂的例子中,如果您的正则表达式中有其他点不想与换行符匹配,您可以将它们替换为[^\r\n],意思是“匹配任何非换行符”

复杂的方式 您可能不想使用“.matches newline”设置。也许这不是你的事。在这种情况下,有另一种方法,但它有点粗糙。继续读下去

既然Notepad++有了OR运算符,我们就可以用它来搜索任何字符,包括换行符,并且在同一正则表达式中也可以互换地使用与非换行符匹配的点。这也意味着我们不必选中“.matches newline”复选框,这很好。如何使用以下正则表达式而不是

(?:\s|.)*
上面说的是“匹配一个点或任何空格字符,包括换行符”。括号内的
?:
告诉记事本++不要捕获此组

因此,对于上述示例,我们可以通过以下方式找到:

(<!-- Start Comment)(?:\s|.)*(End Comment -->)
()
如果要捕获中间位(包括空格),请添加一对额外的括号,如下所示:

(?s)BEGINNING-TEXT(.*)FINAL-TEXT
(<!-- Start Comment)((?:\s|.)*)(End Comment -->)
()
简单的方法 在搜索之前,只需在Notepad++中选中“.matches newline”。就这样

注意:在一个更复杂的例子中,如果您的正则表达式中有其他点不想与换行符匹配,您可以将它们替换为[^\r\n],意思是“匹配任何非换行符”

复杂的方式 您可能不想使用“.matches newline”设置。也许这不是你的事。在这种情况下,有另一种方法,但它有点粗糙。继续读下去

既然Notepad++有了OR运算符,我们就可以用它来搜索任何字符,包括换行符,并且在同一正则表达式中也可以互换地使用与非换行符匹配的点。这也意味着我们不必选中“.matches newline”复选框,这很好。如何使用以下正则表达式而不是

(?:\s|.)*
上面说的是“匹配一个点或任何空格字符,包括换行符”。括号内的
?:
告诉记事本++不要捕获此组

因此,对于上述示例,我们可以通过以下方式找到:

(<!-- Start Comment)(?:\s|.)*(End Comment -->)
()
如果要捕获中间位(包括空格),请添加一对额外的括号,如下所示:

(?s)BEGINNING-TEXT(.*)FINAL-TEXT
(<!-- Start Comment)((?:\s|.)*)(End Comment -->)
()

该链接已断开(“404未找到”)。该链接已断开(“404未找到”)。该问题已存在7年多,此后记事本++发生了重大变化。记事本6.0版(2010年3月版)引入了。这个问题的大多数答案都与6.0版之前的Notepad++版本有关。这个问题已经存在7年多了,从那以后Notepad++发生了重大变化。记事本6.0版(2010年3月版)引入了。这个问题的大多数答案都与6.0版之前的Notepad++版本有关。请不要使用
(?:\s |)
来匹配所有内容,首选标记点匹配换行符
(?s)
或任何字符
[\s\s]
,请参见,不要使用
(?:\s |)
来匹配所有内容,首选标记点匹配换行符
(?s)
或任何字符
[\s\s]
,请参阅