假设你有这个文件:
x
a
b
c
x
x
a
b
c
x
x
并且您想使用 Notepad++找到序列 abc(并选择整个 3 行)。请问如何在正则表达式中表达换行符?
假设你有这个文件:
x
a
b
c
x
x
a
b
c
x
x
并且您想使用 Notepad++找到序列 abc(并选择整个 3 行)。请问如何在正则表达式中表达换行符?
Notepad++ 可以轻松做到这一点,你甚至不需要正则表达式
在查找对话框中查看左下方并将您的搜索模式切换到允许 \n 等的扩展。
由于您正在处理 Windows 格式的文件,因此您将寻找 \r\n (回车,换行)
a\r\nb\r\nc
将找到超过三行的模式
2012 年 6 月 18 日更新
使用新的Notepad++ v6,您确实可以使用正则表达式搜索换行符。所以你可以使用
a\r\nb\r\nc
即使用正则表达式来完成你想要的。注意\r\n
是换行符的 Windows 编码。在 Unix 文件中,它只是\n
.
不幸的是,在使用正则表达式搜索时,您不能在 Notepad++ 中这样做。Notepad++ 基于 Scintilla 编辑器组件,它不处理正则表达式中的换行符。
您可以使用扩展搜索进行换行搜索,但我认为这不会帮助您搜索 3 行。
更多信息在这里。
更新:Robb 和 StartClass0830 关于扩展搜索是正确的。它确实有效,但在使用正则表达式搜索时无效。
^a\x0D\x0Ab\x0D\x0Ac
这将起作用 \x0D 是换行符, \x0A 是回车符。假设文件中的每一行都以 ascii 10 和 13 结尾。
我找到了解决方法。简单地说,在扩展模式下,将所有内容替换\r\n
为文档其余部分中不存在的字符串,例如。,,,newline,,,
(注意特殊的正则表达式字符,如$
、&
和*
)。然后切换到正则表达式模式,做一些替换(现在换行符是,,,newline,,,
)。接下来,再次切换到扩展模式并将所有替换,,,newline,,,
为\r\n
.
对于记事本 6 及更高版本,将其作为正则表达式执行:
a[\r\n]b[\r\n]+c[\r\n]
或者,如果您正在查看(Windows 或 Unix)文件以查看其换行符,\r\n
那么\n
您可能会发现使用扩展模式更容易:
a\r\nb\r\nc\r\n
a\nb\nc\n
不清楚 OP 的意图是否也是选择尾随行返回(在“c”之后),因为这是删除行所必需的。
要不选择尾随换行符,以替换为非空字符串,只需从匹配语句中删除最后的换行符即可。
请注意,如果字符串的最后一行应该有匹配项,而没有匹配的尾随行返回,则匹配失败。
a\r\nb\r\nc
对我有用,但不是^a\x0D\x0Ab\x0D\x0Ac
嗯,太糟糕了,换行符不适用于正则表达式。现在我必须再次回到 Textpad。:(
选择扩展的搜索模式(\n、\r、\t、\0、\x...)
\n 是新行, 这就是 Manuel
查找:"(^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”
在 Notepad++ 中,您还可以尝试突出显示文本的所需部分,然后按 CTRL+J。
这将证明文本的合理性,从而删除所有行尾。