为什么*?在Java Regular Expression中没有给我输出

时间:2016-11-17 08:01:04

标签: java regex

我正在学习量词和面对问题,以了解不情愿和占有。我从stackoverflow,oracle文档中读了很多答案,甚至找到了在视觉上描述它们的好图像https://i.stack.imgur.com/DyhJk.png。但仍然困惑。这是我的代码。

Pattern p = Pattern.compile("a*?");
Matcher m = p.matcher("abclaaakditabdaa");
while(m.find()){
    System.out.println(" Word: " + m.group() );
}

为什么这段代码没有输出?

我的理解:

在图像中,我理解Reluctant首先匹配完整的字符串,如果它不匹配,那么它从左侧开始并向右移动一个字符。因此,在我的示例中,它将不匹配整个字符串,然后它将从左侧开始匹配。所以在我的例子中它应该打印

a
aaa
a
aa

你能说出我理解的错误吗?

0 个答案:

没有答案