RegEx在java中,非捕获组

时间:2013-11-20 09:57:49

标签: java regex

假设我的代码如下:

Pattern pt = Pattern.compile("(?:h)?o");
Matcher m = pt.matcher("hours 123");
m.find();
System.out.println(m.group(0));

结果是

ho

在正则表达式中,我有一个非捕获group (?:h)。为什么这个小组被列入最终结果?我只是希望得到“o”。

2 个答案:

答案 0 :(得分:2)

你的正面看法是错误的。它应该是这样的:

(?<=h)o

有关详细信息,请阅读此页面: http://www.regular-expressions.info/lookaround.html

答案 1 :(得分:2)

group(0)是整场比赛。你需要

Pattern.compile("(?:h)?(o)");

并使用m.group(1)