使用正则表达式进行字符串操作

3
我有一个字符串,比如说C1 AND C2 OR C3 (~!@#$%) AND C4 OR C5,假设我的输入是C3,我想使用正则表达式删除C3和下一个操作符AND|OR之间的无用/数据内容。

因此,对于上述字符串,我希望输出为C1 AND C2 OR C3 AND C4 OR C5


1
垃圾数据是否总是用括号括起来的?另外,你到目前为止尝试了什么? - Vivin Paliath
不行,它可以是任何东西,例如 C1 AND C2 OR C3 ~!@#$% ()()()() ### AND C4 OR C5 - Kumar
同时,还需要提供输入(C1 / C2 / C3 ...)作为输入,因为输入可能是C2,它没有任何垃圾,所以我不应该在C3之后删除垃圾。 - Kumar
你的变量总是以Cn(其中n为数字)的形式吗?请告诉我们有关您的数据的具体信息,这样我们就不必做出假设了。那么以下的C1 AND C2 OR C2 ANDC1ANDC2$$#@@ORC3 AND C4呢?这种情况可能发生吗?中间的垃圾应该被移除吗? - Vivin Paliath
是的,它们始终采用“Cn”的形式,操作符也始终只有“AND|OR”,字符串中也不能有多个C2或C1,或任何Cn。 - Kumar
2个回答

0
function purgeJunk(variable, expression) {
    return expression.replace(purgeJunk.regexp, function(match, digits, operator) {
        if (digits != variable) return match;
        return "C" + digits + " " + operator;
    });
};

function purgeAllJunk(expression) {
    return expression.replace(purgeJunk.regexp, function(match, digits, operator) {
        return "C" + digits + " " + operator;
    });
};

purgeJunk.regexp = /C(\d+) .*?(AND|OR)/g;

// delete junk after C2
purgeJunk(2, "C1 AND C2 OR C3 (~!@#$%) AND C4 OR C5") 
    == "C1 AND C2 OR C3 (~!@#$%) AND C4 OR C5"

// delete junk after C3
purgeJunk(3, "C1 AND C2 OR C3 (~!@#$%) AND C4 OR C5") 
    == "C1 AND C2 OR C3 AND C4 OR C5"

// delete all junk
purgeAllJunk("C1 # AND C2 OR C3 ~!@#$% ()()()() ### AND C4 more garbage OR C5")
    == "C1 AND C2 OR C3 AND C4 OR C5"

0

试试这个:

var str = 'C1 AND C2 OR C3 (~!@#$%) AND C4 OR C5'
var input = 'C3'
console.log(str.replace(new RegExp("(" + input + " ).*?(AND|OR)"), "$1$2"))

这对输入字符串非常特定,不适用于所有情况。 - Vivin Paliath
你需要把C3替换成你的输入内容。 - mrks

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接