gpt4 book ai didi

java - 使用多个字符串分隔符分割字符串

转载 作者:行者123 更新时间:2023-12-01 16:58:36 26 4
gpt4 key购买 nike

如何将过滤器列表拆分为单个过滤器元素?split2String 结果为:线程“main”中的异常 java.util.regex.PatternSyntaxException:索引 10 附近的未封闭组或(|和(

public class TestIt {

public static void main(String[] args) {
// condition is Part of the Thunderbird Filter List
String condition1 = "OR (subject,contains,Xxxx Yyyy) OR (subject,contains,Uuuu Cccc) AND (from,contains,Wwwww Zzzzz) OR (subject,contains,Uuuu Cccc)";
String condition2 = "OR (subject,contains,Xxxx YyOR yy) OR (subject,contains,Uuuu CcAND cc) AND (from,contains,Wwwww Zzzzz) OR (subject,contains,Uuuu Cccc)";
split1String(condition1);
split1String(condition2);
split2String(condition1);
split2String(condition2);
/*
* Expected Result with condition2:
* (subject,contains,Xxxx YyOR yy)
* (subject,contains,Uuuu CcAND cc)
* (from,contains,Wwwww Zzzzz)
* (subject,contains,Uuuu Cccc)
*
*/
}

public static void split1String(String condition) {
// Syntax=OK Result wrong
String[] xsplitted = condition.split("OR |AND ");
for (int i = 0; i < xsplitted.length; i++) {
System.out.println(xsplitted[i]);
}
}

public static void split2String(String condition) {
// Syntax=NOT OK
String[] xsplitted = condition.split("OR (|AND (");
for (int i = 0; i < xsplitted.length; i++) {
System.out.println(xsplitted[i]);
}
}

最佳答案

"OR (|AND (" 此正则表达式的语法不正确。圆括号字符 ( 在正则表达式中具有特殊含义。它标记 capturing group 的乞求由于是特殊字符,所以加上\\就一定是escaped:

"OR (subject,contains,Xxxx Yyyy) OR (subject,contains,Uuuu Cccc) AND (from,contains,Wwwww Zzzzz) OR (subject,contains,Uuuu Cccc)".split("OR \\(|AND \\(")

这给出:

 String[5] { "", "subject,contains,Xxxx Yyyy) ", "subject,contains,Uuuu Cccc) ", "from,contains,Wwwww Zzzzz) ", "subject,contains,Uuuu Cccc)" }

所以正确的正则表达式如下所示:"OR\\(|AND\\("

关于java - 使用多个字符串分隔符分割字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61549357/

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