gpt4 book ai didi

javascript - 使用javascript正则表达式替换文本中的相似字符串

转载 作者:行者123 更新时间:2023-11-30 10:39:38 26 4
gpt4 key购买 nike

我们有这样的文本:

this is a test :rep more text more more :rep2 another text text qweqweqwe.

this is a test :rep:rep2 more text more more :rep2:rep another text text qweqweqwe. (without space)

我们应该将 :rep 替换为 TEXT1,将 :rep2 替换为 TEXT2。

问题:当尝试使用类似的东西替换时:

rgobj = new RegExp(":rep","gi");
txt = txt.replace(rgobj,"TEXT1");

rgobj = new RegExp(":rep2","gi");
txt = txt.replace(rgobj,"TEXT2");

我们在它们中都得到了 TEXT1,因为 :rep2 与 :rep 和 :rep proccess 相似。

最佳答案

如果您要求 :rep 始终以单词边界结尾,请在正则表达式中明确说明:

new RegExp(":rep\\b","gi");

(如果你不需要单词边界,你无法区分“hello I got :rep24 eggs”是什么意思——是:rep:rep2:rep24?)

编辑:

根据匹配字符串由用户提供的新信息,最好的解决方案是将匹配字符串按长度排序,并按该顺序执行替换。这样最长的字符串首先被替换,从而消除了长字符串的开头部分被包含在该长字符串中的较短子字符串匹配替换的风险。因此, :replongeststr:replong 之前被替换,而 :replong:rep 之前被替换。

关于javascript - 使用javascript正则表达式替换文本中的相似字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11885580/

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