java - 正则表达式 "\\d?"给出不正确的输出

标签 java regex

<分区>

示例代码

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开始。

最佳答案

\d? 匹配零个或一个字符,因此它也从字符串的最后一个字符开始,作为零宽度匹配。

请注意,您的输出实际上不是通过 \d? 获得的,而是通过 \d* 获得的。您应该更改其中一个以使问题自洽。

关于java - 正则表达式 "\\d?"给出不正确的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13037922/

相关文章:

java - 如何在 java、MySQL 和 Tomcat 6 中使用连接池

java - 如何使用 Java Timer 和 TimerTask 安排具有开始时间和结束时间的任务

regex - 如果条件不满足,则使整个匹配失败

javascript - setCustomValidity 不起作用

Java:单个代码点的 UTF-8 字节长度(再次代理)

java - 如何在 Java 中访问普通用户的“我的下载”文件夹?

java - 难以理解多维数组

java - 使用正则表达式匹配字符串中的数字

javascript - 正则表达式检测仅由连字符分隔的任意数量的数字

Python正则表达式问题