天天看點

Java工程師必知詞彙:正規表達式

|名詞定義|

正規表達式(Regular Expression,常簡寫為regex、regexp或RE),又稱正則表示式、正則表示法、規則表達式、正常表示法,是計算機科學的一個概念。正規表達式使用單個字元串來描述、比對一系列符合某個句法規則的字元串。在很多文本編輯器裡,正規表達式通常被用來檢索、替換那些符合某個模式的文本。

正規表達式最早是從Perl語言中發展而來的,而後在JDK 1.4以前需要使用到正規表達式的相關定義則需要單獨引入其他的*.jar檔案,但是從JDK1.4後,正則已經預設被JDK所支援,并提供有java.util.regex開發包,同時針對于String 類也增加了對于正則的驗證方法。

|常用正則标記Pattern類|

從JDK1.4開始提供java.util.regex開發包,這個包中提供有一個Pattern類,在這個類中定義有所有支援的正則标記。

1、 【數量:單個】字元比對

  • 任意字元:表示由任意字元組成;
  • \\:比對 “\”;
  • \n:比對換行;
  • \t:比對制表符;

2、【數量:單個】字元集(可以從裡面任選一個字元)

  • [abc]:表示可能是字母a、b、c中的任意一個;
  • [^abc]:表示不是由字母a、b、c中的任意一個;
  • [a-zA-Z]:表示由一個任意的字母所組成,不區分大小寫;
  • [0-9]:表示由一位數字所組成;

3、【數量:單個】台灣字元集

  • .:表示任意的一個字元;
  • \d:等價于“[0-9]”範圍;
  • \D:等價于“[^0-9]”範圍;
  • \s:比對任意一位空格,可能是空格、換行、制表符;
  • \S:比對任意的非空格資料;
  • \w:比對字母、數字、下劃線,等價于“[a-zA-Z_0-9]”;
  • \W:比對非字母、數字、下劃線,等價于“[^a-zA-Z_0-9]”;

4、邊界比對:

  • ^:比對邊界開始;
  • $:比對邊界結束;

5、數量表達,預設情況下隻有添加上了數量機關才可以比對多位字元;

  • 表達式?:該正則可以出現0次或1次;
  • 表達式*:該正則可以出現0次、1次或多次;
  • 表達式+:該正則可以出現1次或多次;
  • 表達式{n}:表達式的長度正好為n次;
  • 表達式{n,}:表達式的長度為n次以上;
  • 表達式{n,m}:表達式的長度在n~m次;

6、邏輯表達式:可以連接配接多個正則:

  • 表達式X表達式Y:X表達式之後緊跟上Y表達式;
  • 表達式X|表達式Y:有一個表達式滿足即可;
  • (表達式):為表達式設定一個整體描述,可以為整體描述設定數量機關;

|String類對正則的支援|

在String中提供有如下與正則有關的操作方法:

1.将指定字元串進行正則判斷:public boolean matches(String regex);

2.替換全部:public String replaceAll(String regex, String replacement);

3.替換首個:public String replaceFirst(String regex, String replacement);

4.正則拆分:public String[] split(String regex);

5.正則指定個數拆分:public String[] split(String regex, int limit);

使用正則的最大特點在于友善進行驗證處理,以及友善進行複雜字元串的修改處理。

|參考資料|

[1] 阿裡雲大學Java視訊課程

[2] Java開發者

[3] 維基百科