(七)java中正則表達式

java中的正則表達式

  • 正則表達式:

    ? 是指一個用來描述或匹配一系列符合某個句法規(guī)則的字符串的單個字符串。

    ? 其實就是一種規(guī)則,有自己特殊的應(yīng)用。

  • 正則表達式用途:
    1). 字符串匹配
    2). 字符串查找
    3). 字符串替換

1. 正則表達式的組成規(guī)則

  • 規(guī)則字符在 java.util.regex 包的 Pattern 類中

    (Pattern類是正則表達式的編譯表達形式)

  • 常見組成規(guī)則:

    • 字符

      • x 表示字符x
      • \ \ 表示一個反斜線 \
      • \r 回車
      • \n 換行符
  • 字符類

    • [ abc ] a、b或者c (只能是一個出現(xiàn),不能同時匹配)
    • [ ^abc ] 任何字符,除了a、b、和 c (否定)
    • [ a-zA-Z ] a到z 或者 A到Z,兩頭字母包括在內(nèi)
    • [ 0-9 ] 0-9的字符都包括
  • x|y 匹配 xy。例如,'z|food' 匹配"z"或"food"。'(z|f)ood' 匹配"zood"或"food"

  • 預(yù)定義字符類

    • . 任何字符 (如果就是.本身,那么就用\.表示)
    • \d 數(shù)字 相當(dāng)于[0-9]
    • \D 非數(shù)字 相當(dāng)于[ ^0-9 ]
    • \s 空白字符 相當(dāng)于[ \t\r\n\x0B ]
    • \S 非空白字符
    • \w 單詞字符 相當(dāng)于[ a-zA-Z_0-9 ] (在正則表達式里面表達單詞的東西必須由這些字符組成)
    • \W 非單詞字符 相當(dāng)于[ ^\w ]
  • 邊界匹配器

    • ^ (行首)匹配輸入字符串開始的位置

    • $ (行尾)匹配輸入字符串結(jié)尾的位置

    • \b 單詞邊界

      (就是不是單詞字符的地方)

      舉例:hello world?haha;xixi

  • 數(shù)量詞

    • X? 表示X一次或者一次也沒有
    • X* 表示X有零次或多次
    • X+ 表示X一次或者多次
    • X{n} 表示X恰好n次
    • X{n,} 表示X至少有n次
    • X{n,m} 表示X至少n次但不超過m次(兩頭都包括)

2. 正則表達式的匹配功能

最常用: String類的 public boolean matches (String regex)

需求:判斷手機號碼是否符合需求

分析(定義手機號碼的規(guī)則):
    以'1'開頭
    第二位是'3'或者'8'
    后面只要是數(shù)字就可以
    
String regex = "1[38]\\d{9}"; //regex規(guī)則
String userInput = "18449351425";
System.out.println(userInput.matches(regex));  //true



需求: 判斷郵箱是否符合需求
    
String regex = "\\w+@\\w{2,6}(\\.\\w{2,3})+";

3. 正則表達式的分割功能

最常用: String類的 public String[] split (String regex)

public String[] split (String regex)
    // 根據(jù)給定的正則表達式的匹配來拆分此字符串
    // 所得數(shù)組中不包括結(jié)尾空字符串
    


// 練習(xí)1
String s1 = "aa   bb      cc";
String[] str1Array = s1.split(" +");
// 用 字符+ 表示匹配一次或多次該字符

//練習(xí)2
String s2 = "D:\\SchoolCourse\\SoftwareProgram\\java"; //路徑要用兩個/
String[] str2Array = s2.split("\\\\");
// 注意是4個/ 因為在原字符串中就是兩個/
// 注意注意注意?。?!

4. 正則表達式的替換功能

最常用: String類的 public String replaceAll (String regex, String replacement)

? 替換此字符串的所有匹配給定的正則表達式的子字符串

區(qū)別:

  • String類 public String replace (String old, String new)
  • String類 public String replaceAll (String regex, String replacement)
  • StringBuffer類 public StringBuffer replace (int start, int end, String replacement)

5. 正則表達式的獲取功能

需要用到 Pattern類 和 Matcher類 (模式和匹配器)

Matcher類 中的 public boolean find () 方法

使用規(guī)則:
    // 模式和匹配器的調(diào)用順序
    //1.把正則表達式編譯成模式對象 
    Pattern p = Pattern.compile("a+b");
    //2.通過模式對象得到匹配對象,這時候需要的是被匹配的字符串對象
    Matcher m = p.matcher("aaaaab");
    //3.調(diào)用匹配器對象的功能(此處為判斷功能)
    boolean bb = m.matches();
獲取功能:
    獲取下列字符串中由三個字符組成的單詞
    "da jia ting wo shuo jin tian yao xia yu bu shang wan zi xi"
    
    
 
    String s = "da jia ting wo shuo jin tian yao xia yu bu shang wan zi xi" //定義字符串
    String regex = "\\b\\w{3}\\b";  //定義規(guī)則  (一定要注意\\b,保證三字符單詞兩側(cè)是單詞邊界)
    Pattern p = Pattern.compile(regex);  //把規(guī)則編譯成模式對象
    Matcher m = p.matcher(s);  //通過模式對象得到匹配器對象
    // 調(diào)用匹配器對象的功能 (此處是獲取功能)
    // 通過 Matcher的find()方法,來查找有沒有符合條件的字串
    boolean flag = m.find();
    //如何得到值呢?  通過Matcher的group()方法
    String substr1 = m.group();

    // 因此完整代碼如下:
    while (m.find()) {
        System.out.println(m.group());
    }

注意事項:

  • 一定要先find() ,然后才能group();

6. Matcher類常用方法

6.1 尋找匹配方法

尋找匹配方法用來檢查輸入字符串是否匹配,并返回一個布爾值,表示是否找到該模式

public boolean matches ()
    // 嘗試將整個區(qū)域與末是匹配

public boolean find ()
    // 嘗試查找與該模式匹配的輸入序列的下一個子序列

當(dāng)使用matches(), find()執(zhí)行匹配操作后,就可以利用以下三個方法得到更詳細的信息.

6.2 詳細信息方法

public String group()
    // 返回匹配到的子字符串

public int start()
    // 返回匹配到的子字符串在字符串中的索引位置
    
public int end()
    // 返回匹配到的子字符串的結(jié)尾索引的后一位

6.3 替換方法

public String replaceAll(String replacement)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • String類和正則表達式 今天的主要內(nèi)容 Scanner類概述Scanner獲取數(shù)據(jù)出現(xiàn)的小問題及解決方案 St...
    須臾之北閱讀 2,019評論 0 3
  • 一.介紹 正則表達式,又稱規(guī)則表達式。計算機科學(xué)的一個概念。正則表達式通常被用來檢索、替換那些符合某個模式(規(guī)則)...
    走著別浪閱讀 393評論 0 2
  • Java 正則表達式 正則表達式是一個特殊的字符序列,用于簡化檢查一個字符串是否與某種模式匹配的 java.uti...
    貪點財好個色閱讀 468評論 0 0
  • 正則表達式到底是什么東西?字符是計算機軟件處理文字時最基本的單位,可能是字母,數(shù)字,標(biāo)點符號,空格,換行符,漢字等...
    獅子挽歌閱讀 2,289評論 0 9
  • 一、正則表達式的概念 正則表達式(英語:Regular Expression,在代碼中常簡寫為regex)。正則表...
    圣賢與無賴閱讀 988評論 0 3

友情鏈接更多精彩內(nèi)容