1. 基礎字符串切割
要求:
按照空格將字符串切割
String a = "asd adsf asdf dfkajsd yyy";
String reg1 = " +"; //1個或多個空格切割
String[] val = a.split(reg1);
for(String v : val){
System.out.println(v);
}
2. 按照特殊字符切割
要求:
按照點將字符串切割
特別說明:
在正則表達式中,. 爲特殊字符,所以必須轉義\. ,而在java字符串中\ 如果想正常表示也需要轉義,就成爲\\.
String b = "abc.sd.s.ldj.l44.sd";
String reg2 = "\\.";
String[] val1 = b.split(reg2);
for(String v : val1){
System.out.println(v);
}
3. 按照疊詞完成切割,爲了規則的結果可以被重用
要求:
按照有重複的字符串切割
特別說明:
正則表達式中()中的內容表示一個組,而組後面跟上\1 表示組的編號,此處表示重用組裏規則過濾出來的值,這個就叫疊詞
String c = "sdflddfkdfguuuflglglhlsgfaszzdk";
String reg3 = "(.)\\1+"; // 組裏爲任意字符,\\1爲重用組裏過濾出來的值,+表示多次利用組裏規則過濾出來的值
String [] val2 = c.split(reg3);
for(String v : val2){
System.out.println(v);
}
補充:
如下面正則表達式: ((a(b))(c))
怎麼判斷它是幾個組呢?
答: 只要數它有幾個左括號或者幾個右括號就行了,這裏是4個組;
那麼怎麼知道組的編號了?
答:從左至右數左括號,第一個就是第一組,一次類推。
總結補充:這個正是正則表達式的一個缺點,就是符號定義越多,正則越長,閱讀行越差。說白了就是越牛的正則表達式越難看明白。