正则表达式在 Notepad++ 中的反向引用和文字之间添加不需要的换行符

Regex adding undesired line break between backreference and literal in Notepad++

我有一个文本文件,其中包含由换行符分隔的元素列表,如下所示:

alpha
beta
gamma
...

我想把它变成这种格式:

(alpha),
(beta),
(gamma),
...

所以我在 Notepad++ 中使用以下正则表达式来替换这些行:

Find: ([^\n]+)
Replace: \(\),

但奇怪的是输出现在每行都有另一个换行符:

(alpha
),
(beta
),
(gamma
),
...

我不知道这是怎么回事。当我单独使用 </code> 或 <code>\), 进行替换时,它工作得很好,但每次我在反向引用之后放置一个文字时,它都会在它们之间放置一个换行符。我知道之后我可以使用另一个正则表达式来解决这个问题,但是有人可以向我解释为什么会这样吗?

而不是 [^\n](=除 LF、换行符之外的任何字符,\n),您应该使用 . 只匹配除行以外的任何字符 打断字符。使用以下正则表达式匹配 非空 行:

^.+$

替换为 \([=14=]\),其中 [=15=] 替换反向引用(也称为占位符)代表整个匹配,括号被转义(因为括号是 Boost 替换模式中用于定义条件的特殊元字符替换模式)。

此处无需使用 m 修饰符,因为 ^$ 锚点分别匹配 的开始和结束 在 Notepad++ 中默认[=​​34=]。

查看 NPP S&R 设置: