Regex仅在未用引号或方括号括起时获取术语



我有一个要求,当运算符在引号中时,我希望将其作为普通术语。

例如:

输入字符串
"acquired GE Plastics" GE Mortors

(Acquired GE Plastics) GE Mortors

正则表达式应与术语GE匹配,该术语未用引号/方括号括起来。我将替换此值,以便将其单独括在引号中。因此,我得到的字符串将看起来像结果:

"acquired GE Plastics" "GE" Mortors

(Acquired GE Plastics) "GE" Mortors

我用来得到上面结果的代码片段是

str.replace({working-regex}, '"GE"');

我有两个正则表达式,它分部分解决了这个问题。首先是匹配所有GE术语bGEb的正则表达式,其次是匹配用引号括起来的GE术语".*?(bGEb).*?"的正则表达式。但是我已经找到了一种添加not运算符的方法,可以从我的第二个正则表达式中排除匹配结果。

const message = `"acquired GE Plastics" GE Mortors`;
const capFirst = str => str.slice(0, 1).toUpperCase() + str.slice(1);
console.log(
message.replace(/"(.+)"(.+)/g, (str, ...args) => {
const [a, b, c] = args[0].split(" ");
return `(${capFirst(a)} ${b.toUpperCase()} ${capFirst(c)})${args[1]}`;
})
);
.as-console-row {color: blue!important}

最新更新