如何在第一次出现char时停止匹配器?

时间:2013-05-16 03:00:22

标签: java regex

我想在这个字符串中使用Matcher:  的 #Function()(a)中

仅选择: #Function()

我正在使用这个正则表达式:

Pattern pat = Pattern.compile("\\#.*\\)");
Matcher match = pat.matcher(s);

我选择的比我想要的更多: #Function()(a)

如何在第一次出现')'时停止匹配?

2 个答案:

答案 0 :(得分:2)

默认情况下.*是贪婪的,所以它会尽可能多地匹配,同时保持整个事情合法。您可以使用.*?代替它,但它会尽可能少地匹配,同时保持整个事物的合法性。

答案 1 :(得分:0)

而不是.*使用[^\\)]*

试试这个:

Pattern pat = Pattern.compile("\\#[^\\)]+\\)");