SCJP6正则表达式问题
我有以下例子的问题:
import java.util.regex.*;
class Regex2 {
public static void main(String[] args) {
Pattern p = Pattern.compile(args[0]);
Matcher m = p.matcher(args[1]);
boolean b = false;
while(b = m.find()) {
System.out.print(m.start() + m.group());
}
}
}
和命令行:
java Regex2 "d*" ab34ef
有人可以解释我,为什么结果是:01234456
正则表达式模式是d * - 它意味着第一或更多,但是在args [1]中有更多的位置,
谢谢
d*
匹配0个或多个数字。 因此,它甚至会在每个字符之前和最后一个字符之后匹配空字符串。 首先在索引0
之前,然后在索引1
之前,依此类推。
所以,对于字符串ab34ef
,它匹配以下组:
Index Group
0 "" (Before a)
1 "" (Before b)
2 34 (Matches more than 0 digits this time)
4 "" (Before `e` at index 4)
5 "" (Before f)
6 "" (At the end, after f)
如果你使用d+
,那么你将在34
得到一个组。
上一篇: SCJP6 regex issue