正则表达式在 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 设置:
我有一个文本文件,其中包含由换行符分隔的元素列表,如下所示:
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 设置: