gpt4 book ai didi

javascript - 在 javascript 中,我无法弄清楚如何使正则表达式仅替换捕获而不替换匹配

转载 作者:行者123 更新时间:2023-11-29 10:20:53 24 4
gpt4 key购买 nike

以下函数旨在从文本中删除随机冠词(词性)。最终百分比将由用户调整,正则表达式更复杂,可以更好地捕捉单词边界,等等。它正在替换(大约 50/50),但它也会压缩空格(匹配但未捕获)。我觉得我在这里真的很愚蠢,但我想不出正确的语法...有人可以帮忙吗?

function posArticles(t) {
var text = t;
var re = / (a|the|an) /g;
var rArray;

text = text.replace(re, function(_, m) {
if (Math.floor(Math.random()*101) < 50) return '';
else return m;
});

return text;
}

我意识到这与 anon 函数的位置/可选参数有关,但我无法弄清楚哪个是匹配项,哪个是捕获项等等。

最佳答案

有很多方法可以做到这一点,但我认为最好的选择是使用 \b——“单词边界”的零宽度匹配。这保证您得到的是“the”而不是“there”或其他任何东西,但与它周围的空格不匹配。

因此,使用 re =/\b([Aa]n?|[Tt]he)\b/;

关于javascript - 在 javascript 中,我无法弄清楚如何使正则表达式仅替换捕获而不替换匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12375832/

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