本文出自hansion的部落格
(regular expression,**中常簡寫為regex、regexp或re)
又稱規則表示式,通常被用來檢索、替換那些符合某個模式(規則)的文字。 .
匹配除換行符 \n 之外的任何單字元
\w 匹配任意字母、數字或下劃線
\s匹配任意的空白符,包括空格、製表符、換頁符等等,等價於 [ \f\n\r\t\v]
\s 匹配任何非空白字元。等價於 [^ \f\n\r\t\v]
\d匹配數字字元,等價於[0-9]
\d 匹配非數字字元,等價於[^0-9]
^放在正則的最開始位置,就代表起始的意思,放在中括號裡,表示排除的意思
$ 匹配字串的結束
()分組,表示式中用了幾個括號,就分幾個組。匹配後可通過matcher.group(int group)獲取相應的匹配字串
group(0)就是指的整個串,group(1)指的是第乙個括號裡的東西,group(2)指的第二個括號裡的東西
定義匹配的字元範圍,可以理解為,只要滿足括號裡面其中的某種條件即可,如[\s*]表示空格或者*號
{}一般用來表示匹配的長度,如 \s 表示匹配三個空格,\s[1,3]表示匹配一到三個空格
匹配確定的 n 次, n 是乙個非負整數
至少匹配n 次,n 是乙個非負整數
最少匹配 n 次且最多匹配 m 次,m 和 n 均為非負整數,其中n <= m
*匹配前面的子表示式零次或多次,等價於
+匹配前面的子表示式一次或多次,等價於
? 匹配前面的子表示式零次或一次,等價於
1.常規寫法:
pattern pattern = pattern.compile("正規表示式語句");
matcher isnum = pattern.matcher("需要匹配的字串");
可以利用獲得的matcher物件對匹配後的字串進行按需處理
2.僅獲取匹配的結果的寫法:
string類中將上述寫法封裝成乙個string.matches(string regex)方法:
"需要匹配的字串".matches("正規表示式語句");
返回值為boolean型別,代表是否匹配
3.pattern類常用方法
static pattern compile(string regex) 將給定的正規表示式編譯並賦予給pattern類
matcher matcher(charsequence input) 生成matcher物件
4.matcher類常用方法
boolean matches() 是否匹配
string replaceall(string replacement) 將目標字串裡與表示式相匹配的子串全部替換為指定的字串
string group(int group) 返回當前查詢而獲得的與指定的組匹配的子串內容
1.是否是月份:0-9、01-09、10-12
/**
* 是否是月份,0-9、01-09、10-12
* @param month 待匹配字串
* @return 是否匹配
*/public boolean ismonth(string month)
表示式解讀:
0?[1-9]|1[0-2]
十位是0可能出現一次或零次,個位1-9其中的乙個數,即01-09或1-9;
或者十位是1,個位是0-2其中的乙個數,即10-12
2.獲取字串中的數字
/**
* 獲取字串中的數字。如03a02,獲得0302
* @param str 待匹配字串
* @return 字串中的數字
*/public int onlygetnum(string str)
表示式解讀:
\d 等價於 [^0-9] 匹配非數字字元
思路解讀:
獲取到所有非數字的字元,將其去掉(通過matcher的replaceall方法將匹配到的字元替換為"",再通過trim方法去掉""),
最後轉換成int返回
3.是否是國內座機號碼
/**
* 是否是國內座機號碼 如:0511-4405222、021-87888822
* @param number 待匹配字串
* @return 匹配結果
*/public boolean istelephonennumber(string number) -\\d|\\d-\\d");
}
表示式解讀:
\d-\d|\d-\d
3個數字,下劃線,8個數字。即三位區號-八位**號碼
4個數字,下劃線,7個數字。即四位區號-七位**號碼
正規表示式測試**與常用表示式
正規表示式 正則入門
先從乙個例子開始正規表示式。書寫乙個匹配手機號的正規表示式,為了方便討論,假定手機號是1開頭,第二位只能是3 5 8中的其中乙個,總共11位的數字,形如13 匹配手機號的正規表示式為 1 358 d 下面介紹此正規表示式中的各個符號的含義。表示字串的開頭,後面緊接著1,表示匹配的字串要以 1 開頭。...
正規表示式入門
對於文字字元,有11個字元被保留作特殊用途。他們是 這些特殊字元也被稱作元字元 不可顯示字元 可以使用特殊字串行來代表某些不可顯示字元 代表tab 0x09 代表回車符 0x0d 代表換行符 0x0a 字符集 字符集是由一對方括號 括起來的字元集合。使用字符集,你可以告訴正規表示式引擎僅僅匹配多個字...
正規表示式入門
老師說過 正規表示式就是用字串讀取字串!學習正規表示式的最好方法是從例子開始,理解例子之後再自己對例子進行修改,實驗。下面給出了不少簡單的例子,並對它們作了詳細的說明。假設你在一篇英文 裡查詢hi,你可以使用正規表示式hi。這幾乎是最簡單的正規表示式了,它可以精確匹配這樣的字串 由兩個字元組成,前乙...