SCJP6正则expression式问题
我有以下例子的问题:
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
正则expression式模式是d * – 它意味着第一个或更多,但是在args [1]中有更多的位置,
谢谢
\d*
匹配0个或多个数字。 所以,它甚至会匹配每个字符之前和最后一个字符之后的空string。 首先在索引0
之前,然后在索引1
之前,依此类推。
所以,对于stringab34ef
,它匹配下列组:
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
获得一个组。