Java Regex在大括号之间获取数据

时间:2013-11-26 23:05:20

标签: java regex

我正在寻找一个正则表达式来匹配大括号之间的文本。

{one}{two}{three}

我希望其中每个都是单独的组,分别为one two three

我尝试了Pattern.compile("\\{.*?\\}");,只删除了第一个和最后一个花括号

感谢。

2 个答案:

答案 0 :(得分:6)

您需要在要捕获的内容周围使用捕获组( )

只是匹配并捕捉大括号之间的内容。

String s  = "{one}{two}{three}";
Pattern p = Pattern.compile("\\{([^}]*)\\}");
Matcher m = p.matcher(s);
while (m.find()) {
  System.out.println(m.group(1));
}

输出

one
two
three

如果你想要三个特定的匹配组......

String s  = "{one}{two}{three}";
Pattern p = Pattern.compile("\\{([^}]*)\\}\\{([^}]*)\\}\\{([^}]*)\\}");
Matcher m = p.matcher(s);
while (m.find()) {
  System.out.println(m.group(1) + ", " + m.group(2) + ", " + m.group(3));
}

输出

one, two, three

答案 1 :(得分:0)

如果你想要3组,你的模式需要3组。

"\\{([^}]*)\\}\\{([^}]*)\\}\\{([^}]*)\\}"
              ^^^^^^^^^^^^^

(中间部分与左右相同)。