java入門 -- 正則詳細

package cn.itcast.Map;

import java.util.Arrays;

import java.util.regex.Matcher;

import java.util.regex.Pattern;

/*

* 正則表達式

*? 預定義字符:

*? . 任何字符(與行結束符可能匹配也可能不匹配)

*? ? ? \d 數字 [0-9]

*? ? ? \D 非數字[^0-9]

*? ? ? \s 空白字符 [\t\n\x0B\f\r]

*? ? ? \S 非空白字符 [^\s]

*? ? ? \w 組成單詞的字符[a-zA-Z_0-9]

*? ? ? \W 非單詞字符 [^\w]

*? ? ? 注意:元字符只能匹配一個字符

* 匹配多位:

* ? 匹配0次或者一次;

*? x* 匹配0次或多次

*? + 出現1次或多次

*? {n} 出現n次

*? {n,} 出現至少n次

*? {n,m} 出現n到m次

* 范圍

* [abc] a,b或c

* [^abc] 任何字符,出了abc以外

* [a-zZ-Z] a到z或者A到Z, 包含開頭和結尾

* [a-d[m-p]] a到d 或 m到p [a-dm-p】并集

* [a-z&&[def] d,e或f 交集

*? ? 注意:范圍也是只匹配一個字符,如果要匹配數量,需要使用數量多位匹配

*

* 邊界匹配器

* ^行開始

* $行結尾

* \b 單詞邊界

* 正則表達式的作用:

*

* 1. 匹配

* 如果正則表達式的內容需要被復用,那么就需要對正則表達式進行分組,目的是復用匹配內容。組號不能指定,是從1開始的。

* (rgex)用括號進行分組

* \1 表示第一組的內容

* \2 表示第二組的內容

* 如果在regex外引用分組內容,要使用$符號

*

*

* 2. 切割

* split()

*

* 2. 替換

* replaceAll(String regex, String replacement))? 全部替換

*

* 4. 查找

* 指定為字符串的正則表達式必須先被編譯為此類的實例,然后再將得到的模式用于創建Mather對象

* 依照正則表達式,該對象可以與任意字符序列匹配,執行匹配送涉及的所有狀態駐留在匹配器中,所以多個匹配器可以共享同一模式,因此

* 典型的順序是:

*? Pattern p = Pattern.compile("a*b");

*? Matcher m = p.matcher("aaaaab");

*? 查找需要的類

*? Pattern 正則類

*? Matcher 匹配器對象

*? 匹配器的方法:

*? 1. find() 通知匹配器去匹配符合條件的子串,如果能找到返回TRUE,找不到返回false

*? 2 .group() 獲取符合條件的子串

*

*? 注意: 使用group方法的時候,一定要使用find方法先去查找,類似迭代查找輸出,直到查找不到

*

*

*/

public class Demo5 {

public static void main(String[] args) {

System.out.println("%".matches("."));

System.out.println("9".matches("\\d"));

String str = "大家家家明天天天天回很開開心心心的回家家樂";

String[] arr = str.split("(.)\\1+");

System.out.println(Arrays.toString(arr));

replaceTest();

matchTest();

}

public static void replaceTest(){

String str = "我我我我我我愛愛愛你你你,真真的!";

str = str.replaceAll("(.)\\1+","$1");

System.out.println(str);

}

public static void matchTest(){

//找出3個字母組成的單詞

String content = "da jia de jia qi wang ti hjiao fjdsl fds";

String reg = "\\b[a-zA-Z]{3}\\b";

Pattern p = Pattern.compile(reg);

Matcher m = p.matcher(content);

while(m.find()){

System.out.println(m.group());

}

}

}

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容