什么是&替换所有'的原则。方法?

时间:2014-08-25 09:51:18

标签: java regex

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

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

3 个答案:

答案 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

*表示前面文本的零或更多次出现。是一个通配符。