gpt4 book ai didi

javascript - 如何匹配字符,但如果它们严格用引号引起来则不匹配

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

范围

假设我们有一个字符串你好,你的狗吗? “d”我“好”“g”哈好

要求

我想要一个正则表达式,它给出 d 或 g 的出现,但当它们严格(没有其他字符)括在引号中时则不出现。

因此,在上面的字符串中,匹配的事件将是(包含在 {} 中)你好,你好吗{d}o{g}? “d”我是“{g}oo{d}”“g”哈{g}oo{d}

编辑

我正在尝试这样的事情:

//constructing a regex
re = RegExp(`(d|g)`, 'g')
newString = ""
'hello how are you dog? "d" I am "good" "g" ha good'
.split(re).map((word, index) => {
if (word.match(re) != null) {
console.log("match")
newString += "|" //replacement character
} else {
newString += word
}
})

注意

我正在使用 Javascript 工作。无法想出一个模式。

谢谢

最佳答案

您需要一个正则表达式来匹配您不需要的子字符串(您将替换的子字符串),并匹配和捕获您需要保留的内容。我假设您想保留 "g""d"。使用

/("[gd]")|[dg]/g

请参阅regex demo

以及将完成最终工作的代码:

var rx = /("[gd]")|[dg]/g;
var s = 'hello how are you dog? "d" I am "good" "g" ha good';
var res = s.replace(rx, function($0,$1) {
return $1 ? $1 : "|";
});
console.log(res); // => hello how are you |o|? "d" I am "|oo|" "g" ha |oo|

因此,("[gd]") 匹配并将 "g""d" 捕获到组 1 中,并且如果它匹配,该值在替换期间被粘贴回来(参见 $1 ? $1),否则,其他上下文中的任何 dg 都与 [dg] 然后在replace回调方法中替换。

关于javascript - 如何匹配字符,但如果它们严格用引号引起来则不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45818951/

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