replaceAll()用法

/*
 * replaceAll():
 * 格式:
 *      原始字符串.replaceAll(正則,"替換新內容");
 * 將原始字符串中,與所有正則表達式匹配的地方,都進行替換,
 *      返回一個新字符串
 */
public class TestReplaceAll {
    public static void main(String[] args) {

        //1.基本用法
        String str = "bbb,ccc,ddd,eee";//將所有逗號替換爲空格
        String r1 = str.replaceAll(","," ");
        System.out.println(r1);

        //只替換第一個匹配結果
        System.out.println(str.replaceFirst(","," "));

        //2.貪婪模式    +,.,?它們會儘可能多的匹配內容,因此.+匹配內容爲:aaa</p><p>bbb</p><p>ffff
        String str1 = "<p>aaa</p><p>bbb</p><p>ffff</p>";
        //替換爲:            bbb       bbb
        str1.replaceAll("<p>.+</p>","bbb");//   .:表任意
        System.out.println(str1.replaceAll("<p>.+</p>","bbb"));//實際只替換一個

        //3.非貪婪模式
        //+?    儘可能少的匹配
        //*?    儘可能少的匹配
        //??    儘可能少的匹配
        System.out.println(str1.replaceAll("<p>.+?</p>","bbb"));
        System.out.println(str1.replaceAll("<p>.+?</p>","<p>bbb</p>"));

        //3.替換中的分組
        //例1:
        //最終是希望結果爲:aaabbbffff
        String str2 = "<p>aaa</p><p>bbb</p><p>ffff</p>";

        //$:用括號分組,用$1表示要替換第一組的內容,即第一個()內的內容
        System.out.println(str1.replaceAll("<p>(.+?)</p>", "$1"));             
        System.out.println(str1.replaceAll("<p>(.+?)</p>", "<a>$1</a>"));

        //替換中的分組
        //例2:
        String str3 = "marry xing";//=>xing marry
        str3.replaceAll("(.+?) (.+)", "$2 $1");
        System.out.println(str3.replaceAll("(.+?) (.+)", "$2 $1"));
        System.out.println(str3.replaceAll("(.+?)\\s(.+)", "$2 $1"));


    }
}
發佈了40 篇原創文章 · 獲贊 4 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章