正则表达式捕获可能存在或可能不存在的组

时间:2015-01-27 07:21:22

标签: java regex

我在使用正则表达式分组时遇到了一些问题。 假设我有以下字符串:

"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)

我开始做的事情:

(.*?),(.*?),(.*?)\\((.*?)\\)

我如何从这里开始?

1 个答案:

答案 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]*)(?: \\((.*?)\\))?$"

DEMO