如何在字符串中的特定字符之间提取标记

时间:2014-10-16 04:40:39

标签: regex

我有一个类似的字符串;

Something{this i want1}.{this i want2}oyherthings[{this also i want1}.{this also i want2}]morethings

我想要输出如下。

this i want1
this i want2
this also i want

我可以使用java的substring函数。但我想知道是否可以使用正则表达式完成。 我尝试了一些正则表达式组合但无法使其正常工作。 我试过一些正则表达式。

Pattern matchString = Pattern.compile("{(.*?}");
Matcher matcher = "
Something{this i want1}.{this i want2}oyherthings[{this also i want}]morethings";

对此有何帮助?

3 个答案:

答案 0 :(得分:0)

如果花括号总是平衡的,您可以使用以下内容。

\\{([^}]*)}

然后参考group(1)来检索匹配结果。

Explanation | Code Demo

答案 1 :(得分:0)

您可以使用lookaround assertions

String s = "Something{this i want1}.{this i want2}oyherthings[{this also i want}]morethings";
Pattern regex = Pattern.compile("(?<=\\{)[^{}]*(?=\\})");
 Matcher matcher = regex.matcher(s);
 while(matcher.find()){
        System.out.println(matcher.group(0));
}

<强>输出:

this i want1
this i want2
this also i want

答案 2 :(得分:0)

{([^}]*)}

试试这个。抓住比赛。见演示。

http://regex101.com/r/dZ1vT6/34