gpt4 book ai didi

javascript - 有关两个字符串之间内容的正则表达式帮助 (javascript)

转载 作者:行者123 更新时间:2023-11-28 18:04:16 27 4
gpt4 key购买 nike

希望有人能帮忙。我有一个格式如下例所示的字符串:

Lipsum text as part of a paragraph here, yada. |EMBED|{"content":"foo"}|/EMBED|. Yada and the text continues...

我正在寻找的是一个Javascript正则表达式来捕获|EMBED||/EMBED|“标签”之间的内容,对该内容运行一个函数,然后替换整个|EMBED|...|/EMBED| 字符串以及该函数的返回值。

问题是我可能在一个较大的字符串中有多个 |EMBED| block 。例如:

Yabba...|EMBED|{"content":"foo"}|/EMBED|. Dabba-do...|EMBED|{"content":"yo"}|/EMBED|.

我需要 RegEx 来单独捕获和处理每个 |EMBED| block ,因为其中包含的内容相似但又独特。

我最初的想法是,我可以有一个 RegEx 来捕获 |EMBED| block 的第一次迭代,以及替换此 | 的函数。 EMBED| block 是循环或递归的一部分,用于不断查找下一个 block 并替换它,直到在字符串中找不到更多 block 。

...但这看起来很贵。有没有更 Eloquent 方式?

最佳答案

您可以使用String.prototype.replace将通过正则表达式找到的子字符串替换为匹配using a mapping function的修改版本。 ,例如:

var input = 'Yabba...|EMBED|{"content":"foo"}|/EMBED|. Dabba-do...|EMBED|{"content":"yo"}|/EMBED|.'

var output = input.replace(/\|EMBED\|(.*?)\|\/EMBED\|/g, function(match, p1) {
return p1.toUpperCase()
})

console.log(output) // "Yabba...{"CONTENT":"FOO"}. Dabba-do...{"CONTENT":"YO"}."

<小时/>

确保使用非贪婪选择器 .*? 来选择分隔符之间的内容,以允许每个字符串进行多次替换。

关于javascript - 有关两个字符串之间内容的正则表达式帮助 (javascript),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43007880/

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