Regex replace^(.*)\r\n意外行为

Regex replace^(.*)\r\n意外行为,regex,notepad++,Regex,Notepad++,我不明白为什么正则表达式在替换时会有这样的行为。考虑下面的列表: ABC CBA DDD JKL 我希望替换每个条目,以便得到以下结果: ABC,CBA,DDD,JKL 我使用记事本++使用以下内容进行匹配: (.*)\r\n 并将其用于替换: ($1), 这将导致预期的结果 然而,我最初的想法是,我可以利用这场比赛: ^(.*)\r\n 但是:这会导致 ABC,CBA DDD,JKL 我只是不明白为什么它不能以这种方式工作,并导致那个奇怪的结果。我错过了什么为什么^(.*)\r\n

我不明白为什么正则表达式在替换时会有这样的行为。考虑下面的列表:

ABC
CBA
DDD
JKL
我希望替换每个条目,以便得到以下结果:

ABC,CBA,DDD,JKL
我使用记事本++使用以下内容进行匹配:

(.*)\r\n
并将其用于替换:

($1),
这将导致预期的结果

然而,我最初的想法是,我可以利用这场比赛:

^(.*)\r\n
但是:这会导致

ABC,CBA
DDD,JKL

我只是不明白为什么它不能以这种方式工作,并导致那个奇怪的结果。我错过了什么为什么^(.*)\r\n错误?

请尝试使用以下正则表达式:

[\r\n]+$

并将其替换为
,只需尝试使用以下正则表达式:

[\r\n]+$

并将其替换为
,只需尝试使用以下正则表达式:

[\r\n]+$

并将其替换为
,只需尝试使用以下正则表达式:

[\r\n]+$

并将其替换为

如下更改您的正则表达式。因为行尾可能只有
\n
\r
加上
\n
字符

(.*)[\r\n]+
将匹配的字符串替换为
$1,
\1,


如下图所示更改正则表达式。因为行尾可能只有
\n
\r
加上
\n
字符

(.*)[\r\n]+
将匹配的字符串替换为
$1,
\1,


如下图所示更改正则表达式。因为行尾可能只有
\n
\r
加上
\n
字符

(.*)[\r\n]+
将匹配的字符串替换为
$1,
\1,


如下图所示更改正则表达式。因为行尾可能只有
\n
\r
加上
\n
字符

(.*)[\r\n]+
将匹配的字符串替换为
$1,
\1,


记事本尝试匹配第一行的正则表达式。它找到一个匹配项并根据需要替换。你的新州是:

ABC,CBA 
DDD 
JKL
它现在查看下一行,现在是
DDD
,并在那里执行replace。 现在是:

ABC,CBA 
DDD,JKL
因此,替换正在移动行的事实可能会混淆编辑器的正则表达式逻辑


如果您现在再次执行相同的正则表达式替换,这将导致您想要的结果。

记事本尝试匹配第一行的正则表达式。它找到一个匹配项并根据需要替换。你的新州是:

ABC,CBA 
DDD 
JKL
它现在查看下一行,现在是
DDD
,并在那里执行replace。 现在是:

ABC,CBA 
DDD,JKL
因此,替换正在移动行的事实可能会混淆编辑器的正则表达式逻辑


如果您现在再次执行相同的正则表达式替换,这将导致您想要的结果。

记事本尝试匹配第一行的正则表达式。它找到一个匹配项并根据需要替换。你的新州是:

ABC,CBA 
DDD 
JKL
它现在查看下一行,现在是
DDD
,并在那里执行replace。 现在是:

ABC,CBA 
DDD,JKL
因此,替换正在移动行的事实可能会混淆编辑器的正则表达式逻辑


如果您现在再次执行相同的正则表达式替换,这将导致您想要的结果。

记事本尝试匹配第一行的正则表达式。它找到一个匹配项并根据需要替换。你的新州是:

ABC,CBA 
DDD 
JKL
它现在查看下一行,现在是
DDD
,并在那里执行replace。 现在是:

ABC,CBA 
DDD,JKL
因此,替换正在移动行的事实可能会混淆编辑器的正则表达式逻辑


如果您现在再次执行相同的regex replace,这将产生您想要的结果。

您不能只使用
\s+
并通过
替换它。您根本不需要捕获

见演示


你不能只使用
\s+
然后通过
替换它。你根本不需要捕获

见演示


你不能只使用
\s+
然后通过
替换它。你根本不需要捕获

见演示


你不能只使用
\s+
然后通过
替换它。你根本不需要捕获

见演示



我的回答也是一样。记事本会逐行匹配吗?在第一次替换之后,记事本++会有文本
CBA\r\nDDD\r\njkl
,以便搜索
^(.*)\r\n
将跳过
CBA
。听起来是一个合理的答案。我的答案是一样的。记事本会逐行匹配吗?在第一次替换之后,记事本++会有文本
CBA\r\nDDD\r\njkl
以便搜索
^(.*)\r\n
将跳过
CBA
。听起来是一个合理的答案。我的答案是一样的。记事本会逐行匹配吗?在第一次替换之后,记事本++会有文本
CBA\r\nDDD\r\njkl
以便搜索
^(.*)\r\n
将跳过
CBA
。听起来是一个合理的答案。我的答案是一样的。记事本会逐行匹配吗?在第一次替换之后,记事本++会有文本
CBA\r\nDDD\r\njkl
以便搜索
^(.*)\r\n
将跳过
CBA
。听起来这是一个合理的答案。您正在使用记事本++?如果是,哪个版本?我无法重现这种行为…你在使用记事本++?如果是,哪个版本?我无法重现这种行为…你在使用记事本++?如果是,哪个版本?我无法重现这种行为…你在使用记事本++?如果是,哪个版本?我无法复制这种行为。。。