Pattern p = Pattern.compile("\\d?");
Matcher m = p.matcher("ab34ef");
boolean b = false;
while (m.find())
{
System.out.print(m.start());// + m.group());
}
但是字符串总长度是6.那么当索引开始时,m.start如何在输出中给出6 从0开始。
答案 0 :(得分:3)
\d?
匹配零个或一个字符,因此它也会超出字符串的最后一个字符,作为零宽度匹配。
请注意,您的输出实际上并非由\d?
获得,而是由\d*
获得。您应该更改其中一个或另一个以使问题自我一致。
答案 1 :(得分:1)
\d?
匹配零个或一个数字,匹配每个数字,但也匹配每个字符边界。
尝试匹配至少一个数字:
Pattern p = Pattern.compile("\\d+");