javascript - 替换嵌套括号中的内容

标签 javascript regex regex-group

输入 = ABCDEF ((3) abcdef),GHIJKLMN ((4)(5) 值),OPQRSTUVW((4(5)) 值 (3))

预期输出 = ABCDEF,GHIJKLMN,OPQRSTUVW

到目前为止尝试过

Output = Input.replace(/ *\([^)]*\)*/g, "");

最佳答案

在这里使用正则表达式可能不会起作用或无法缩放,因为您希望在输入字符串中嵌套 括号。当输入具有已知且固定的结构时,正则表达式可以很好地工作。相反,我建议您使用解析器 来解决这个问题。在下面的代码中,我遍历了输入字符串,一次一个字符,我使用一个计数器来跟踪有多少个左括号。如果我们在括号项内,那么我们不会记录这些字符。我最后还有一个简单的替换来删除空格,这是您的输出暗示的额外步骤,但您从未明确提及。

var pCount = 0;
var Input = "ABCDEF ((3) abcdef),GHIJKLMN ((4)(5) Value),OPQRSTUVW((4(5)) Value (3))";
var Output = "";
for (var i=0; i < Input.length; i++) {
    if (Input[i] === '(') {
        pCount++;
    }
    else if (Input[i] === ')') {
        pCount--;
    }
    else if (pCount == 0) {
        Output += Input[i];
    }
}

Output = Output.replace(/ /g,'');
console.log(Output);

关于javascript - 替换嵌套括号中的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43114069/

相关文章:

Java 模式与组的匹配

javascript - 从 document.getElementById().value 获取空值

javascript - 按钮点击 : open a new browser tab and call a function

javascript HTMLCollection 访问

swift - 在 Swift 中使用特殊字符转义正则表达式

regex - awk:更改字段分隔符,保持第一列不变

javascript - 检查结构是否为空 : Javascript

c++ - 使用正则表达式进行输入验证

Java 非捕获正则表达式组提供 "null"捕获

python - 首先先行查找,然后在先行匹配后面查找最接近的匹配捕获组。 Python 中的正则表达式