正则表达式中的Notepad ++换行符

时间:2010-12-09 13:18:17

标签: find notepad++ multilinestring

假设您有此文件:

x
a
b
c
x
x
a
b
c
x
x

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

9 个答案:

答案 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,则可能会发现使用扩展模式更容易:

  • 选择搜索模式>扩展(\ n,\ r,\ t,\ 0,\ x ...)
  • 在“查找Windows文本框”中:a\r\nb\r\nc\r\n
  • 或在“查找适用于Unix的文本框”中: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.

这样可以证明文本的合理性,从而删除所有行结尾。