Find 记事本++;正则表达式中的换行符
假设您有以下文件:Find 记事本++;正则表达式中的换行符,find,notepad++,multilinestring,Find,Notepad++,Multilinestring,假设您有以下文件: x a b c x x a b c x x 您需要使用记事本++查找序列abc(并选择整3行)。如何用正则表达式来表达换行符呢?Notepad++可以轻松地做到这一点,您甚至不需要正则表达式 在“查找”对话框中,查看左下角并将搜索模式切换到“扩展”模式,该模式允许\n等 如果您正在处理windows格式的文件,您将查找\r\n(回车符,换行符) 将在三行上找到模式2012年6月18日更新 使用new,您确实可以搜索带有正则表达式的换行符。所以你可以用 a\r\nb\r\nc
x
a
b
c
x
x
a
b
c
x
x
您需要使用记事本++查找序列abc(并选择整3行)。如何用正则表达式来表达换行符呢?Notepad++可以轻松地做到这一点,您甚至不需要正则表达式 在“查找”对话框中,查看左下角并将搜索模式切换到“扩展”模式,该模式允许\n等 如果您正在处理windows格式的文件,您将查找\r\n(回车符,换行符)
将在三行上找到模式2012年6月18日更新 使用new,您确实可以搜索带有正则表达式的换行符。所以你可以用
a\r\nb\r\nc
即使使用正则表达式也可以实现您想要的功能。注意\r\n
是换行符的Windows编码。在Unix文件中,它只是\n
不幸的是,在使用正则表达式搜索时,在记事本++中无法做到这一点。Notepad++基于闪烁编辑器组件,该组件不处理正则表达式中的换行符
您可以使用扩展搜索进行换行搜索,但我认为这无助于您搜索3行
更多信息
更新:Robb和StartCass0830关于扩展搜索的观点是正确的。它确实有效,但在使用正则表达式搜索时无效
^a\x0D\x0Ab\x0D\x0Ac
这将起作用\x0D是换行符,\x0A是回车符。假设文件中的每一行都以ascii 10和13结尾。
a\r\nb\r\nc
对我有效,但不是^a\x0D\x0Ab\x0D\x0Ac
嗯,太遗憾了,newline没有使用正则表达式。现在我必须再次回到Textpad(我找到了解决方法。 简单地说,在扩展模式下,将所有
\r\n
替换为文档其余部分中不存在的字符串,例如、、换行符、、
(注意特殊的regexp字符,如$
、&
和*
)。
然后切换到Regexp模式,进行一些替换(现在换行符是,,,换行符,,,
)。
接下来,再次切换到扩展模式,并在记事本++中将所有
,,,,,
替换为\r\n
。您还可以尝试高亮显示所需的文本部分,然后按CTRL+J
这将使文本对齐,从而删除所有行尾。选择搜索模式 扩展(\n\r\t\0\x…) \n是新线之类的
对于记事本6及更高版本,请将其作为正则表达式执行:
- 选择搜索模式>正则表达式(不匹配换行符)
- 在“查找内容”文本框中:
a[\r\n]b[\r\n]+c[\r\n]
\r\n
或\n
,则您可能会发现使用扩展模式更容易:
- 选择搜索模式>扩展(\n\r\t\0\x…)
- 在Windows的“查找内容”文本框中:
a\r\nb\r\nc\r\n
- 或者在Unix的“查找内容”文本框中:
a\nb\nc\n
请注意,如果字符串的最后一行有匹配项,但没有匹配的尾行返回,则匹配将失败。oh..我尝试了一个\nb\nc..忘记了回车符。谢谢!有时需要使用正则表达式搜索换行符(如果您想进行更复杂的搜索,包括换行符)。不可能像下一个回答中详细说明的那样,我尝试使用“正则表达式”(而不是“扩展”)在记事本++5.9.3中使用换行符,但徒劳!但在记事本++6.0中运行良好-请参见下面darioo的答案。我认为这是不对的,是针对正则表达式而不是扩展模式提出的问题。在正则表达式中可能存在这样的情况\x0D是换行符,\x0A是回车符请参见答案我认为这个答案是错误的。请参见Robb的答案和我的答案,以验证这个答案是否错误。@StartClass0830:我试过你了rs和Robb的答案,我无法使多行匹配工作。编辑:是的,在使用扩展搜索时它确实工作。但在使用正则表达式时它不工作。您是对的。假设行以\r\n结尾。可能在您的环境中,文件的行仅以\n结尾(没有\r).无论如何..还有什么比Notepad++更好的完全支持正则表达式的吗?@PaN1C_showt1; me:嗯,总是有Vim和Emacs。我使用了这两种方法,它们都非常强大的正则表达式支持。但是学习曲线总是让人感到不快。我建议你访问、下载Vim并在尝试认真使用它之前阅读教程。我补充^这是我一直使用的。我不知道为什么这个解决方案没有升级。它在v6之前绝对有效。这在一个小文档上很好。在一个非常大的文件上尝试过(>1M行)。Notepad++完全挂起(可能是因为内存太少)。此方法的问题是:在替换所有新行字符时,整个文档都会在一行中结束。处理大型文档的一个潜在修改是关闭文档,并使用Kuchara的实用解决方法,使用目录和文件名过滤器替换文件,该过滤器只会修改预期文件。因此,在单行上进行转换时,无需在闪烁编辑器中打开文件。这与问题有何关系?请确保打开
匹配换行符
选项,正如@aljipa中所述,在特定位置需要换行符时,该选项是不必要的。
^a\x0D\x0Ab\x0D\x0Ac