String s="a";
System.out.println(s.replaceAll(".*","1"));
为什么上面代码的输出是“11”而不是“1”?
答案 0 :(得分:2)
因为.*
与Zero length matches匹配
更改为.+
,您感觉良好。
答案 1 :(得分:2)
因为*
匹配一个字符零次或多次。使用+
代替您应该看到差异。
答案 2 :(得分:0)
究竟发生了什么,当你没有提到任何一个位置时。它在零次发生之前和之后进行检查。因此,两个1被取代。但是如果你提供一个职位。比如说第一种情况,那么只有一次在没有出现之前,因此只有一次1被打印
String s="a";
System.out.println(s.replaceAll(".*a","1")); // prints 1
System.out.println(s.replaceAll(".*","1")); //prints 11
System.out.println(s.replaceAll("a.*","1")); //prints 1
*表示前面文本的零或更多次出现。是一个通配符。