假设您有此文件:
x
a
b
c
x
x
a
b
c
x
x
你想用Notepad ++找到序列abc (并选择整行3行)。请问如何在正则表达式中表达换行符?
答案 0 :(得分:48)
Notepad ++可以轻松完成,甚至不需要正则表达式
在查找对话框中,查看左下方并将搜索模式切换为扩展,允许\ n等。
由于您正在使用Windows格式处理文件,因此您将寻找\ r \ n(回车,换行符)
a\r\nb\r\nc
将找到超过三行的模式
答案 1 :(得分:30)
2012年6月18日更新
使用新的Notepad++ v6,您确实可以使用正则表达式搜索换行符。所以你可以使用
a\r\nb\r\nc
即使使用正则表达式来完成你想要的东西。注意\r\n
是换行符的Windows编码。在Unix文件中,它只是\n
。
不幸的是,在使用正则表达式搜索时,你不能在Notepad ++中这样做。 Notepad ++基于Scintilla编辑器组件,它不处理正则表达式中的换行符。
您可以使用扩展搜索进行换行搜索,但我认为这不会帮助您搜索3行。
更多信息here。
更新:Robb和StartClass0830对扩展搜索是正确的。它确实有效,但在使用正则表达式搜索时却没有。
答案 2 :(得分:8)
^a\x0D\x0Ab\x0D\x0Ac
这将起作用\ x0D是换行符,\ x0A是回车符。假设您文件中的每一行都以ascii 10和13结尾。
答案 3 :(得分:3)
我找到了解决方法。
简单地说,在扩展模式下,将所有\r\n
替换为文档其余部分中不存在的字符串,例如。 ,,,newline,,,
(注意$
,&
和*
等特殊的正则表达式字符。
然后切换到Regexp模式,进行一些替换(现在换行符为,,,newline,,,
)。
接下来,再次切换到扩展模式,并将所有,,,newline,,,
替换为\r\n
。
答案 4 :(得分:0)
a\r\nb\r\nc
适合我,但不适用^a\x0D\x0Ab\x0D\x0Ac
嗯,太糟糕了,换行不能使用正则表达式。现在我必须再次回到Textpad。 :(
答案 5 :(得分:0)
选择搜索模式 扩展(\ n,\ r,\ t,\ 0,\ x ...)
\ n是新行,例如 This is Manuel
答案 6 :(得分:0)
对于Notepad 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
还不清楚操作意图是否也要选择尾随行返回(在“ c”之后),这是删除行所必需的。
要不选择尾随行返回,以适合用非空字符串替换,只需从匹配语句中删除最后一行即可。
请注意,如果字符串的最后一行应该有一个匹配项,但没有匹配的结尾行返回,则匹配将失败。
答案 7 :(得分:0)
Find: "(^a.$)\r\n(b.)\r\n^(c.*)$" - 提取 3 整行,只存储数据>
替换为:"\1\2\3" - 放下(重放)数据
使用 Notepad++ v7.9.5 在 Regex 中工作正常
占位符: ^ Start 和 $ End of line 可以在 ()store 内部或外部,如图所示,尽管在给定的示例中显然不是必需的。注意“[^x]”是不同的——这里“^”是“NOT”。
存储和重放的优势允许更复杂的模式匹配,而无需再次输入您想要的结果,甚至可以更改重放:“\2\3\1”代表“bca”
答案 8 :(得分:-3)
在Notepad ++中,您还可以尝试突出显示所需的文本部分,然后按CTRL + J.
这样可以证明文本的合理性,从而删除所有行结尾。