Javascript JS str.replace(regex,函数)不是贪婪的

Javascript JS str.replace(regex,函数)不是贪婪的,javascript,regex,replace,Javascript,Regex,Replace,我有一个正则表达式,它获取一个新行分隔的文本块,其中所有行都缩进两个空格: chorusRegex = /((?:(?:\n|^) .*)+)/g 在regex101上(请参见此处的确切代码片段),它工作正常(将整个块作为一个匹配项抓取),但当我这样做时: lyrics = lyrics.replace(chorusRegex, function($0, $1) { return "<div class='chorus'>" + $1 + "&l

我有一个正则表达式,它获取一个新行分隔的文本块,其中所有行都缩进两个空格:

chorusRegex = /((?:(?:\n|^)  .*)+)/g
在regex101上(请参见此处的确切代码片段),它工作正常(将整个块作为一个匹配项抓取),但当我这样做时:

lyrics = lyrics.replace(chorusRegex, function($0, $1) {
  return "<div class='chorus'>" + $1 + "</div>"
})
我想让
replace
函数产生以下结果:

"[D]No tenemos Sumo [A]Sacerdote que
No [Bm]se compadece en [G]mi debilidad
[D]Sino Uno que fue [A]tentado en todo [Bm]igual
Que nosotros[G]
[]Sin pecado. 

<div class='chorus'> 
  [D]Vamos confiada[A]mente 
  Al [Bm]trono de la [G]gracia por
  [D]Misericordia, [A]gracia
  Y opor[Bm]tuno so[G]corro h[D]allar. 
</div>

<div class='chorus'> 
  sadf
  sadf
  weqrqwer 
</div>"
“[D]没有特内莫斯相扑[A]Sacerdote que
没有[Bm]se compadece en[G]mi debilidad
[D] 中非联合国秘书处
克诺索特罗斯[G]
[]辛佩卡多。
[D] Vamos confiada[A]mente
Al[Bm]trono de la[G]gracia por
[D] 米塞里科迪亚,格雷西亚
是的,是的,是的。
萨达夫
萨达夫
weqrqwer
"
但问题是我当前的代码产生了这样的结果:

"[D]No tenemos Sumo [A]Sacerdote que
No [Bm]se compadece en [G]mi debilidad
[D]Sino Uno que fue [A]tentado en todo [Bm]igual
Que nosotros[G]
[]Sin pecado. 

<div class='chorus'> 
  [D]Vamos confiada[A]mente   
</div>
<div class='chorus'> 
  Al [Bm]trono de la [G]gracia por 
</div>
<div class='chorus'> 
  [D]Misericordia, [A]gracia 
</div>
<div class='chorus'> 
  Y opor[Bm]tuno so[G]corro h[D]allar. 
</div>"
“[D]没有特内莫斯相扑[A]Sacerdote que
没有[Bm]se compadece en[G]mi debilidad
[D] 中非联合国秘书处
克诺索特罗斯[G]
[]辛佩卡多。
[D] Vamos confiada[A]mente
Al[Bm]trono de la[G]gracia por
[D] 米塞里科迪亚,格雷西亚
是的,是的,是的。
"
var-lyris=“[D]没有特内莫斯相扑[A]萨塞尔多特风格\n\
没有[Bm]se compadece en[G]mi debilidad\n\
[D] 中非联合国秘书处秘书处[A]tentado en todo[Bm]igual\n\
克诺索特罗斯[G]\n\
[]Sin pecado。\n\
\n\
[D] Vamos confiada[A]mente\n\
Al[Bm]trono de la[G]gracia por\n\
[D] 米塞里科迪亚,[A]格雷西亚\n\
Y opor[Bm]tuno so[G]corro h[D]allar。\n\
\n\
sadf\n\
sadf\n\
weqrqwer“,
chorusRegex=/((?:(?:\n | ^.*)+)/g;
歌词=歌词。替换(chorusRegex,“$1”);

console.log(歌词)
您期望的输出是什么?歌词是输入?是的,我发现这是可行的,但只有当
歌词
是一个模板文字时(不知道为什么)。当
歌词
仅仅是一个双引号字符串时,你能想出如何计算它吗?哦,我发现有
\r\n
字符,而不是简单的
\n
(来自windows用户)。干杯
"[D]No tenemos Sumo [A]Sacerdote que
No [Bm]se compadece en [G]mi debilidad
[D]Sino Uno que fue [A]tentado en todo [Bm]igual
Que nosotros[G]
[]Sin pecado. 

<div class='chorus'> 
  [D]Vamos confiada[A]mente   
</div>
<div class='chorus'> 
  Al [Bm]trono de la [G]gracia por 
</div>
<div class='chorus'> 
  [D]Misericordia, [A]gracia 
</div>
<div class='chorus'> 
  Y opor[Bm]tuno so[G]corro h[D]allar. 
</div>"