Pattern p = Pattern.compile("(?=[1-9][0-9]{2})[0-9]*[05]");
Matcher m = p.matcher("101");
while(m.find()){
System.out.println(m.start()+":"+ m.end()+ m.group());
}
输出------>> 0:210
请告诉我为什么我在此处将 m.group()
的输出设为 10
。
据我所知,m.group()
应该什么都不返回,因为 [05]
什么都不匹配。
最佳答案
您的模式 (?=[1-9][0-9]{2})[0-9]*[05]
由两部分组成:
(?=[1-9][0-9]{2})
和
[0-9]*[05]
第一部分是一个零宽度正前瞻,它搜索长度为 3 的数字,第一个不能为 0。这与您的 101
匹配。< br/>
第二部分搜索任意数量的数字,然后搜索 0 或 5。这与 101
的前 2 个字符匹配,因此结果为 10
。
参见 Java - Pattern获取更多信息。
关于java - 请解释此正则表达式的输出(以正面前瞻开头),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33804811/