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

时间:2017-11-13 16:47:46

标签: regex notepad++ line-breaks

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

alpha
beta
gamma
...

我想把它变成这种格式:

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

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

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

但输出现在奇怪地为每一行输入了另一个换行符:

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

我不知道这是怎么回事。当我单独使用$1\),进行替换时,它可以正常工作,但每次我在反向引用后放置一个文字时,它会在它们之间放置一个换行符。我知道我之后可以使用另一个正则表达式解决这个问题,但有人可以向我解释为什么会发生这种情况吗?

1 个答案:

答案 0 :(得分:2)

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

^.+$

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

此处不需要使用m修饰符,因为^$锚定符合的开头和结尾默认 em>在Notepad ++中。

请参阅NPP S& R设置:

enter image description here