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]
,请参阅