如何在正则表达式中执行此操作?

时间:2014-12-04 18:21:15

标签: java regex

我有一个java程序,在我的代码的一部分中,我必须读取这样的字符串,^s(group1) ^s(group2),然后返回字符串" group1"和" group2"所以我使用了这个正则表达式\^s\(.*\),但它返回整个字符串。

出了什么问题?

2 个答案:

答案 0 :(得分:1)

.*匹配),因此匹配不会在右括号处停止。如果您想要针对嵌套的括号组提供一些额外保险,请尝试使用[^\)]*[^\(\)]*

您还可以考虑使用非贪婪的修饰符.*?,这也可以解决问题。有些人发现它比可否定的字符集匹配更具可读性。

答案 1 :(得分:0)

您可以使用groups提取这些字词。

\^s\((.*?)\)

这表示捕获^ s()之间的任何内容,并且可以像这样使用。

String str = "^s(group1) ^s(group2)";
Matcher m = Pattern.compile("\\^s\\((.*?)\\)").matcher(str);

while (m.find()) {
    System.out.println(m.group(1));
}

输出

group1
group2
相关问题