日期:2014-05-17  浏览次数:20930 次

正则表达式是什么意思: (.+?)
正则表达式是什么意思: (.+?)

------解决方案--------------------
点代表任意字符(根据其他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__