gpt4 book ai didi

javascript - JS str.replace(regex, function) 不是贪心的

转载 作者:行者123 更新时间:2023-11-29 18:57:13 27 4
gpt4 key购买 nike

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

chorusRegex = /((?:(?:\n|^)  .*)+)/g

在 regex101 上(参见这里的确切片段 https://regex101.com/r/BFMtHP/1 )它工作正常(将整个 block 作为一个匹配项),但是当我这样做时:

lyrics = lyrics.replace(chorusRegex, function($0, $1) {
return "<div class='chorus'>" + $1 + "</div>"
})

它不是将 div 放在每个缩进的文本 block 周围,而是将 div 放在每个缩进的行周围。

为什么 lyrics.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.

[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.

sadf
sadf
weqrqwer"

我希望 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]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>"

最佳答案

var lyrics = "[D]No tenemos Sumo [A]Sacerdote que\n\
No [Bm]se compadece en [G]mi debilidad\n\
[D]Sino Uno que fue [A]tentado en todo [Bm]igual\n\
Que nosotros[G]\n\
[]Sin pecado.\n\
\n\
[D]Vamos confiada[A]mente\n\
Al [Bm]trono de la [G]gracia por\n\
[D]Misericordia, [A]gracia\n\
Y opor[Bm]tuno so[G]corro h[D]allar.\n\
\n\
sadf\n\
sadf\n\
weqrqwer",

chorusRegex = /((?:(?:\n|^) .*)+)/g;

lyrics = lyrics.replace(chorusRegex, "<div class='chorus'>$1</div>");

console.log(lyrics)

关于javascript - JS str.replace(regex, function) 不是贪心的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48821003/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com