如何将过滤器列表拆分为单个过滤器元件?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]);
}
}
您可以使用以下正则表达式来提取信息。因为所有你需要的都包含在括号里。
Pattern pattern = Pattern.compile("\\((.*?)\\)", Pattern.MULTILINE);
Matcher matcher = pattern.matcher(condition2);
while (matcher.find()) {
for (int i = 1; i <= matcher.groupCount(); i++) {
System.out.println(matcher.group(i));
}
}
"OR(|AND("
这个正则表达式语法不正确。圆括号字符(
在正则表达式中有特殊含义。它标志着捕获组的乞求。由于它是一个特殊字符,因此必须通过添加\\
来转义:
"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)" }
因此,正确的正则表达式如下:<code>“或\(|和\(“)
问题内容: 我有一个值为的字符串。我想将字符串分成两个字符串,值为的字符串和的值为字符串。 正确的功能/语法是什么? 我已经看过了,但是找不到将数据返回到两个单独的字符串中的实际语法。 问题答案: 该功能适用于:
我是 Perl 的新手,但根据我阅读的文档,看起来 Perl 中的 split 函数要求正则表达式模式而不是字符串分隔符作为第一个参数,但我发现使用 之类的东西仍然可以正确拆分字符串。 基于此,我尝试使用可变分隔符(例如。< code>print (split($var,$ string))[0] where < code > $ var = ' ' )并发现它不起作用。我做错了什么? 谢谢! 编
问题内容: 如何在JavaScript中使用多个分隔符拆分字符串?我正在尝试在逗号和空格上进行拆分,但是AFAIK,JS的拆分功能仅支持一个分隔符。 问题答案: 传递正则表达式作为参数: 编辑添加: 您可以通过选择数组的长度减去1来获得最后一个元素: …,如果模式不匹配:
为什么下面的bash代码不起作用? 预期产出:
我有一个输入字符串,其中包含由分隔符(| |)分隔的4个ID。我使用的代码如下: 但有些情况下并非所有ID都存在,如: 在上面的场景中,拆分不会分为4个部分,并且无法判断拆分数组中缺少哪个id。 有人可以帮助一个有效的解决方案。
问题内容: 我在网上找到了一些答案,但是我没有使用正则表达式的经验,我相信这里是需要的。 我有一个字符串,需要用分隔 或也就是说,它必须是分号或逗号后跟一个空格。没有尾随空格的单个逗号应保持不变 示例字符串: 应该拆分为包含以下内容的列表: 问题答案: 幸运的是,Python内置了:) 更新: 在你的评论之后: