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

标签 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)

我已经开始了:

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

我该如何从这里开始?

最佳答案

我建议你使用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]*)(?: \\((.*?)\\))?$"

DEMO

关于java - 正则表达式捕获可能存在或可能不存在的一组组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28165213/

相关文章:

regex - 环视是否会影响正则表达式可以匹配哪些语言?

Java多线程按顺序获取输出?

python - 替换 XML 文件中的单词

java - 如何解决应用程序中的 Java JLabel 问题?

java - java如何声明子类

java - 字符串操作与正则表达式

javascript - 尝试在用户键入时使用 javascript 正则表达式验证日期条目

python - 为什么 python re 模块不能与 @ 一起工作?

java - 找不到适合模式的正则表达式

java - 几张照片后相机 Intent 使我的应用程序崩溃