String str = "1234545";
String regex = "\\d*";
Pattern p1 = Pattern.compile(regex);
Matcher m1 = p1.matcher(str);
while (m1.find()) {
System.out.print(m1.group() + " found at index : ");
System.out.print(m1.start());
}
此程序的输出为1234545 found at index:0 found at index:7
。
我的问题是:
为什么在str
实际上没有空格时会打印一个空格。
答案 0 :(得分:1)
"index:0"
和"at index:7"
之间打印的空格来自您打印的字符串文字。它应该在匹配的字符串之后出现;但是,在这种情况下,匹配为空。
以下是正在进行的操作:第一个匹配消耗字符串中的所有数字,为后续匹配留下零个字符。但是,以下匹配成功,因为表达式中的星号*
允许匹配空字符串。
为了避免将来出现这种混淆,请在实际匹配项周围添加分隔符,如下所示:
System.out.print("'" + m1.group() + "' at index : ");
现在你会看到一对空的单引号,表明匹配是空的。