将以下字符串视为输入。第二个&第三个AND是多余的。我想删除它。
输入
AND(AND(string("test message")),filter(AND(OR(source:string("XYZ"),source:string("ABC")))))
我希望输出为
AND(string("test message"),filter(OR(source:string("XYZ"),source:string("ABC"))))
基本上输入字符串使用AND运算符,但只指定了一个参数,这使输入成为无效字符串。我想修改字符串以删除AND,以便它只有一个参数指定。
什么是最好的方法。正则表达式或字符串解析。我的字符串可能很长。
我检查了多个帖子&似乎不建议使用正则表达式,特别是如果它嵌套太多。
请建议处理此案的最佳方法。
一些输入&他们的输出
1。 AND(字符串(""测试消息""))
string(""test message"")
AND(AND(字符串(""测试信息"")),过滤器(AND(OR):来源:字符串("" XYZ""),来源:字符串("" ABC""))))))
AND(字符串(""测试消息""),过滤器(OR(来源:字符串("" XYZ"" ),来源:字符串("" ABC""))))
AND(字符串(""测试信息""),过滤(OR(来源:字符串("" XYZ"& #34),来源:字符串("" ABC"")))) AND(字符串(""测试消息""),过滤(OR(来源:字符串("" XYZ""),来源:字符串("" ABC""))))
Annu
答案 0 :(得分:1)
如果你采用正则表达式路线,那么一个积极的前瞻,然后是负向前瞻可能会起作用:
string result = Regex.Replace(searchText, "(?i)(?x)(?(?<!AND\\()AND\\()|(?(?=\\){2})(?!\\){3})\\))", "");
输入:
AND(AND(string("test message")),filter(AND(OR(source:string("XYZ"),source:string("ABC")))))
AND(string(""test message""))
AND(string(""test message""),filter(OR(source:string(""XYZ""),source:string(""ABC""))))
结果:
AND(string("test message"),filter(OR(source:string("XYZ"),source:string("ABC"))))
string(""test message"")
string(""test message""),filter(OR(source:string(""XYZ""),source:string(""ABC"")))
答案 1 :(得分:0)
I tried it in tcl , this is the soultion
regsub -all {\(AND} $string "" string .u will get the expected output