假设你有这个文件:
x
a
b
c
x
x
a
b
c
x
x
如果你想在Notepad++中查找序列abc (并选择整个三行),该如何在正则表达式中表示换行符?
假设你有这个文件:
x
a
b
c
x
x
a
b
c
x
x
如果你想在Notepad++中查找序列abc (并选择整个三行),该如何在正则表达式中表示换行符?
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
。我在处理Windows CR/LF格式的文档时遇到了一个小问题。
如果你勾选了匹配换行符的选项,你需要使用“..”来匹配CR/LF。所以如果你有:
<blah><blah>",
"<more><blah>
你需要使用",.."
来匹配一些带逗号、回车或换行符的字符串和另一个字符串。
对于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
不清楚OP的意图是否也要选择末尾的换行符(在“c”之后),因为这是删除行所必需的。
要不选择末尾的换行符,以便用非空字符串替换,只需从匹配语句中删除最后一个换行符即可。
请注意,如果字符串的最后一行有匹配项,但没有匹配的尾行回车,则匹配失败。选择搜索模式,即扩展模式(\n,\r,\t,\0,\x...)
\n 表示换行等 这是 Manuel
查找: "(^a.$)\r\n(b.)\r\n^(c.*)$" - 挑选3行完整的数据,仅存储数据
替换为: "\1\2\3" - 放下(重放)数据
在Notepad++ v7.9.5中的正则表达式中运行良好
占位符: ^ 行首和 $ 行尾可以在()内或外使用,如示例所示,但在给定示例中明显不必要。注意 "[^x]" 是不同的 - 这里 "^" 表示 "非"。
存储和重放的优点是允许更复杂的模式匹配,而无需再次输入想要得到的内容,甚至可以更改重放方式: "\2\3\1" 代表 "bca"
a\r\nb\r\nc
对我来说可以工作,但是 ^a\x0D\x0Ab\x0D\x0Ac
不行。
唉,太糟糕了,换行符与正则表达式不兼容。现在我又得回到 Textpad 了。:(
匹配换行符
选项。 - aljipa