我正在寻找一个正则表达式来匹配大括号之间的文本。
{one}{two}{three}
我希望其中每个都是单独的组,分别为one
two
three
。
我尝试了Pattern.compile("\\{.*?\\}");
,只删除了第一个和最后一个花括号
感谢。
答案 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组。
"\\{([^}]*)\\}\\{([^}]*)\\}\\{([^}]*)\\}"
^^^^^^^^^^^^^
(中间部分与左右相同)。