42

假设你有这个文件:

x
a
b
c
x
x
a
b
c
x
x

并且您想使用 Notepad++找到序列 abc(并选择整个 3 行)。请问如何在正则表达式中表达换行符?

4

9 回答 9

53

Notepad++ 可以轻松做到这一点,你甚至不需要正则表达式

在查找对话框中查看左下方并将您的搜索模式切换到允许 \n 等的扩展。

由于您正在处理 Windows 格式的文件,因此您将寻找 \r\n (回车,换行)

a\r\nb\r\nc

将找到超过三行的模式

于 2010-12-09T13:24:43.513 回答
35

2012 年 6 月 18 日更新

使用新的Notepad++ v6,您确实可以使用正则表达式搜索换行符。所以你可以使用

a\r\nb\r\nc

即使用正则表达式来完成你想要的。注意\r\n是换行符的 Windows 编码。在 Unix 文件中,它只是\n.

不幸的是,在使用正则表达式搜索时,您不能在 Notepad++ 中这样做。Notepad++ 基于 Scintilla 编辑器组件,它不处理正则表达式中的换行符。

您可以使用扩展搜索进行换行搜索,但我认为这不会帮助您搜索 3 行。

更多信息在这里

更新:Robb 和 StartClass0830 关于扩展搜索是正确的。它确实有效,但在使用正则表达式搜索时无效。

于 2010-12-09T13:24:53.780 回答
12
^a\x0D\x0Ab\x0D\x0Ac

这将起作用 \x0D 是换行符, \x0A 是回车符。假设文件中的每一行都以 ascii 10 和 13 结尾。

于 2010-12-09T13:32:18.227 回答
5

我找到了解决方法。简单地说,在扩展模式下,将所有内容替换\r\n为文档其余部分中不存在的字符串,例如。,,,newline,,,(注意特殊的正则表达式字符,如$&*)。然后切换到正则表达式模式,做一些替换(现在换行符是,,,newline,,,)。接下来,再次切换到扩展模式并将所有替换,,,newline,,,\r\n.

于 2011-10-09T23:57:32.790 回答
1

对于记事本 6 及更高版本,将其作为正则表达式执行:

  • 选择搜索模式 > 正则表达式(不带 . 匹配换行符)
  • 在 Find what 文本框中:a[\r\n]b[\r\n]+c[\r\n]

或者,如果您正在查看(Windows 或 Unix)文件以查看其换行符,\r\n那么\n您可能会发现使用扩展模式更容易:

  • 选择搜索模式 > 扩展(\n、\r、\t、\0、\x...)
  • 在 Find what Textbox for Windows 中:a\r\nb\r\nc\r\n
  • 或者在 Unix 的 Find what 文本框中:a\nb\nc\n

不清楚 OP 的意图是否也是选择尾随行返回(在“c”之后),因为这是删除行所必需的。

要不选择尾随换行符,以替换为非空字符串,只需从匹配语句中删除最后的换行符即可。

请注意,如果字符串的最后一行应该有匹配项,而没有匹配的尾随行返回,则匹配失败。

于 2020-06-15T19:57:00.720 回答
0

a\r\nb\r\nc对我有用,但不是^a\x0D\x0Ab\x0D\x0Ac

嗯,太糟糕了,换行符不适用于正则表达式。现在我必须再次回到 Textpad。:(

于 2011-08-11T13:50:25.007 回答
0

选择扩展的搜索模式(\n、\r、\t、\0、\x...)

\n 是新行, 这就是 Manuel

于 2020-05-08T21:15:07.560 回答
0

查找:"(^a. $)\r\n(b. )\r\n^(c.*)$" - 拾取 3 整行,仅存储数据

替换为:“\1\2\3” - 放下(重播)数据

使用 Notepad++ v7.9.5 在正则表达式中工作正常

占位符:^ Start 和 $ End of line 可以在 ()store 内部或外部,如图所示,尽管在给定示例中显然不是必需的。注意“[^x]”是不同的——这里“^”是“NOT”。

存储和重放的优势允许更复杂的模式匹配,而无需再次输入您想要结束的内容,甚至更改重放:“bca”为“\2\3\1”

于 2021-06-16T17:41:05.713 回答
-4

在 Notepad++ 中,您还可以尝试突出显示文本的所需部分,然后按 CTRL+J。

这将证明文本的合理性,从而删除所有行尾。

于 2013-01-12T00:08:09.050 回答