"全部替换"方法的原理是什么?


String s="a";
System.out.println(s.replaceAll(".*","1"));

为什么上面代码的输出是"11",而不是"1"?

因为*匹配一个字符0次或更多次。使用+,您应该会看到不同。

因为.*匹配0长度匹配

改成.+就好了

当你没有提到a的任何位置时,它会检查前后是否出现零。因此两个1被替换了。但是如果你为a提供一个位置,比如第一种情况那么在a之前只有一次出现0因此只有一次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

*表示零次或多次出现前面的文本和。

相关内容

最新更新