正则表达式是什么意思: (.+?)
正则表达式是什么意思: (.+?)
[解决办法]
点代表任意字符(根据其他Pattern参数,可能包括换行符,默认不包括)
+代表前面的部分出现1到多次
*代表前面的部分出现0到多次
?代表前面的部分出现1到多次(这个不是+?的?)
X+,X*,X?称之为贪婪(Greedy)匹配,只要符合条件,可以一直匹配到最后
X+?,X*?,X??称之为勉强(Reluctant)匹配,匹配第一个符合条件的,就终止
比如:
- Java code
System.out.println("abc".replaceAll(".+", "X")); System.out.println("abc".replaceFirst(".+", "X")); System.out.println("abc".replaceAll(".+?", "X")); System.out.println("abc".replaceFirst(".+?", "X"));
[解决办法]
最外面的括号,称之为捕获
1 类似数学运算的括号(这个建议用非捕获的(?:X)来替代)
2 可以使用编号在正则表达式中,引用
比如
- Java code
System.out.println("abc".replaceAll("(.+?)", "__$1__")); //__a____b____c__