正規表示式入門

2021-08-14 21:46:20 字數 2520 閱讀 3512

本文出自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。這幾乎是最簡單的正規表示式了,它可以精確匹配這樣的字串 由兩個字元組成,前乙...