这里是my patter:
/\r\n|\r|\n/
并且将被\n\n
替换。我要做的就是用双换行符替换所有单换行符。
所以输入:
something
something else
预期结果:
something
something else
问题是,我想避免匹配其他(或更多)新行之后的换行。所以我只想选择单换行符。所以这应该没有任何匹配项:
something
something else
任何想法我该怎么做?
答案 0 :(得分:1)
使用([^\r\n])\n([^\r\n])
并将其替换为$1\n\n$2
。这意味着
(
=开始第1组
[^
=起始否定集(NOT)
\n\r
=字符不匹配
]
=末尾否定集
)
=终端机1
\n
=匹配换行符
第2组是第1组的重复。
替换为
$1
=第一组
\n\n
=您的角色
$2
=第二组
答案 1 :(得分:0)
使用正则表达式([^\r\n])[\r\n](?![\r\n]+)
并替换为$1\n\n
。它使用捕获组来捕获换行符(不是换行符本身)之前的符号,并使用负向超前查找来确保在不捕获下一个符号的情况下,换行符不会跟随另一个换行符。
不幸的是,JS当前不完全支持负向后看(在ECMAScript 2018中已接受),否则可以使用(?<![\r\n])[\r\n](?![\r\n])
–根本没有捕获组,因此替换字符串只能是{{ 1}}。