我的代码:
Pattern pattern = Pattern.compile("a?");
Matcher matcher = pattern.matcher("ababa");
while(matcher.find()){
System.out.println(matcher.start()+"["+matcher.group()+"]"+matcher.end());
}
Run Code Online (Sandbox Code Playgroud)
输出:
0[a]1
1[]1
2[a]3
3[]3
4[a]5
5[]5
Run Code Online (Sandbox Code Playgroud)
我知道的 :
Java API说:
我想知道的:
Gui*_*let 11
这?是一个贪婪的量词,因此它会在尝试0次出现之前首先尝试匹配1次出现.在你的字符串中,
它比这复杂一点,但这是主要的想法.当1次出现不匹配时,它将尝试0次出现.
至于start,end和group的值,它们将是匹配开始,结束和组匹配的位置,所以在你的字符串的第一个0-occurence匹配中,你得到1,1和emtpy字符串.我不确定这真的能回答你的问题.
| 归档时间: |
|
| 查看次数: |
3120 次 |
| 最近记录: |