我在使用正则表达式分组时遇到了一些问题。 可以说我有以下字符串:
"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)
我已经开始了:
(.*?),(.*?),(.*?)\\((.*?)\\)
我该如何从这里开始?
最佳答案
我建议你使用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+
匹配一个或多个空格。
或
您可以根据我们的模组建议的 "\\s*[,()]\\s*"
正则表达式拆分您的输入。
或
将 2 和 4 组设为可选。
"^(.*?)(?:,(.*?))?,([^()\\n]*)(?: \\((.*?)\\))?$"
关于java - 正则表达式捕获可能存在或可能不存在的一组组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28165213/