Java字符串整理筆記(四)
阿新 • • 發佈:2017-10-22
情況 lan gen 英文字母 元字符 電話 log util 查找
6. 使用正則表達式
正則表達式是一種描述字符串集的方法,是以字符串集合中各字符串的共有特征為依據的。在程序開發中,正則表達式被廣泛地應用在字符串的
查找、替換、匹配等情況下,因此靈活地使用正則表達式對程序員非常重要。正則表達式中含有一些具有特殊意義的字符,這些字符稱為正則表達式的元字符。
正則表達式中字符及其意義如下:
元字符 正則表達式的寫法 含義 . “." 代表任意一個字符
\d “\\d" 代表0~9的任何一個數字 \D “\\D” 代表任何一個非數字字符 \s “\\s” 代表空白字符,如“\t”、“\n”
\S “\\S” 代表非空白字符
\W “\\W” 代表不可用於標識符的字符
\p{Lower} “\\p{Lower}” 代表小寫字母{a~z}
\p{Upper} “\\p{Upper}” 代表大寫字母{A~Z}
\p{ASCII} “\\p{ASCII}” ASCII字符
\p{Alpha} “\\p{Alpha}” 字母字符
\p{Digit} “\\p{Digit}” 十進制數字,即[0~9]
\p{Alnum} “\\p{Alnum}” 數字或字母字符
\p{Punct} “\\p{Punct}” 標點符號:!"#%&‘()*+,-_/:;<=>?@[\]^_`{|}~
\p{Graph} “\\p{Graph}” 可見字符:[\p{Alnum}\p{Punct}]
\p{Print} “\\p{Print}” 可打印字符:[\p{Graph}\x20]
\p{Blank} “\\p{Blank}” 空格或制表符:[\t]
\p{Cntrl} “\\p{Cntrl}” 控制字符:[\x00-\x1F\x7F]
說明:在正則表達式中,“.”代表任何一個字符,因此在正則表達式中如果想使用普通意義的字符“.”,必須使用轉義字符“\”。
在正則表達式中,可以使用方括號括起來若幹個字符來表示一個元字符,該元字符可代表方括號中的任何一個字符,例如“ reg="[abc]4" ”,字符串“a4”、“b4”、“c4”
都是和正則表達式匹配的字符串。方括號元字符還可以為其它格式,具體如下所示:
//[^456]:代表4、5、6之外的任何字符。 //[a-r]:代表a~r的任何一個。 //[a-zA-Z]:可表示任意一個英文字母。 //[a-e[g-z]]:代表a~e,或g~z中的任何一個字母(並運算)。 //[a-o&&[def]]:代表d、e、f(交運算)。 //[a-d&&[^bc]]:代表字母a、d(差運算)。
在正則表達式中允許使用限定修飾符來限定元字符出現的次數,如“A*”代表A可在字符串中出現0次或多次。修飾限定符的用法如下所示:
限定修飾符 意義 示例
? 0次或1次 A?
* 0次或多次 A*
+ 一次或多次 A+
{n} 正好出現n次 A{2}
{n,} 至少出現n次 A{5,}
{n,m} 出現n~m次 A{3,8}
實例6.1,創建類CheckOut,在該類中的主方法中定義驗證字符串是否為合法的手機號碼的方法,代碼如下:
import java.util.regex.Matcher; import java.util.regex.Pattern; public class CheckOut { public static void main(String[] args) { // TODO Auto-generated method stub String regex="0\\d{2,3}[-]?\\d{7,8}|0\\d{2,3}\\s?\\d{7,8}" +"|13[0-9]\\d{8}|15[1089]\\d{8}"; //驗證手機號碼的正則表達式 String str="13412345678"; //要進行驗證的手機號碼 Pattern pattern=Pattern.compile(regex); //編譯正則表達式 Matcher matcher=pattern.matcher(str); //創建給定輸入模式的匹配器 boolean bool=matcher.matches(); if(bool==true) { //如果驗證為真 System.out.println("合法的正則表達式"); //給出提示信息 } else { //如果驗證為假 System.out.println("不合法的正則表達式"); } } }
實例6.1執行的結果為:合法的正則表達式。
說明:電話號碼包括固定電話和手機號碼,其中,固定電話是由區號和號碼組成,區號以0開頭的,後面是2~3位數,因此在匹配區號的時候,可以使用
正則表達式“0\d{2,3}”,固定電話號碼是由7~8位數字組成,因此可以使用表達式“\d{7,8}”來進行匹配。因為固定電話的組合方式可能是“區號-號碼”或者是
“區號 號碼”,因此,匹配固定電話號碼,可以使用表達式“0\\d{2,3}[-]?\\d{7,8}|0\\d{2,3}\\s?\\d{7,8}”。手機號碼是11位數,並以數字“1”開頭,考慮到手機號碼
的特殊性,則以正則表達式“13[0-9]\\d{8}|15[1089]\\d{8}”來對手機號碼進行匹配。
Java字符串整理筆記(四)