我在使用正则表达式分组时遇到了一些问题。 假设我有以下字符串:
"Test, some information, more stuff (addtional information)"
我想将其拆分为4组,如下所示:
group1: Test
group2: some information
group3: more stuff
group4: additional information
然而,第2组可能存在也可能不存在,与第4组相同。
example:
"Test, more stuff" (group 2 and 4 don't exist)
"Test, some informattion, more stuff" (group 4 don't exist)
"test, more stuff (additional information)" (group 2 dont exist)
我开始做的事情:
(.*?),(.*?),(.*?)\\((.*?)\\)
我如何从这里开始?
答案 0 :(得分:2)
我建议您使用string.split
。
String s = "Test, some information, more stuff (addtional information)";
String parts[] = s.split(",\\s+|\\s*[()]");
System.out.println(Arrays.toString(parts));
输出:
[Test, some information, more stuff, addtional information]
\s+
匹配一个或多个空格。
OR
您可以根据我们的mod建议的"\\s*[,()]\\s*"
正则表达式来分割您的输入。
OR
将2组和4组视为可选。
"^(.*?)(?:,(.*?))?,([^()\\n]*)(?: \\((.*?)\\))?$"