<分区>
示例代码
Pattern p = Pattern.compile("\\d?");
Matcher m = p.matcher("ab34ef");
boolean b = false;
while (m.find())
{
System.out.print(m.start());// + m.group());
}
答案:012456
但是字符串的总长度是 6。那么当索引开始时,m.start 如何在输出中给出 6
从0开始。
<分区>
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开始。
最佳答案
\d?
匹配零个或一个字符,因此它也从字符串的最后一个字符开始,作为零宽度匹配。
请注意,您的输出实际上不是通过 \d?
获得的,而是通过 \d*
获得的。您应该更改其中一个以使问题自洽。
关于java - 正则表达式 "\\d?"给出不正确的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13037922/