黑馬程式員--Java基礎--Regex

來源:互聯網
上載者:User

標籤:Regex   字元   

——Java培訓、Android培訓、iOS培訓、.Net培訓 期待與您共同交流!——

Regex1. 基本Regex

所謂Regex就是使用一系列預定義的特殊字元來描述一個字串的格式規則,然後使用該格式規則匹配某個字串是否符合格式要求。

1.1. “.”和”\”

“.”點兒,在Regex中標是任意一個字元。
“\”在Regex中是轉意字元,當我們需要描述一個已經被Regex使用的特殊字元時,我們就可以通過使用”\”將其轉變為原本的意思。
“\”在Regex中也有一些預定義的特殊內容:
\d:表示任意一個數字
\w:表示任意一個單詞字元(只能是 數字,字母,底線)
\s:表示任意一個空白字元(\t \r \n \f \x0B)
\D:表示任意一個非數字字元
\W:表示任意一個非單詞字元
\S:表示任意一個非空白字元

1.2. “^”和”$”

通過在Regex的開始添加”^”以及末尾添加”$”來表示一個整體。若不使用它們,那麼Regex只匹配某個字串的部分內容是否符合格式規則,但使用它們,則要求字串必須從頭到尾都滿足該格式規則。
例如:^\w{ 8,10 }$ 表示整體字串只能出現單詞字元8-10個

1.3. “字元集合 []”

“[]”用來描述單一字元,方括弧內部可以定義這個字元的內容,也可以描述一個範圍。
例如:
當我們需要描述所有小寫字母是,我們可以使用範圍
同樣還可以:
也可以在多個範圍內選擇:

1.4. “*”、”+”、”?”

通常我們需要描述的字串會有很多重複出現的元素,但又不需要嚴格限制出現的次數時,我們就可以使用”*”,”+”這些量詞。
例如:郵箱地址,那麼在”@”字元前允許出現若干字元作為使用者名稱。這時候我們就可以使用”\w+”來描述這裡至少出現一個單詞字元了。
“+”:表示內容可以連續出現至少1次以上
“*”:表示內容出現0-若干次
“?”:表示內容出現0-1次

1.5. {n}、{n,}{n,m}

除了3.1.4中講到的量詞外,有時我們也需要要求內容出現的次數有具體要求。比如手機號碼。這時我們要求出現的數字就不能是一個模糊的概念了,而必須要求11位。又比如我們要求使用者輸入密碼時,要求密碼是6-15位。遇到這類問題是,我們可以使用:
{n}:表示內容必須出現n次
{n,m}:表示內容出現n-m次
{n,}:表示內容出現至少n次
例如:
\d{11}:就表示數字只能出現11位,這樣就解決了上述的問題。

1.6. 分組

通過上面的內容,我們還無法解決類似下面的問題:
在描述電話號碼時,前面有區號,區號的形式可以是0086或者+86
那麼我們如何在這兩個字串之間選擇?
這時我們可以使用分組”()”
():可以將內容看做一個整體
()中可以使用”|”來表示或關係。例如:
(+86|0086):表示這裡可以是+86或者0086。

2. String正則相關API2.1. matches方法

matches()方法的參數要求我們傳入一個用字串描述的Regex,然後使用該Regex描述的字串格式規則來匹配當前字串,若滿足那麼該方法返回true。否則返回false.
例如:

String emailRegEx ="^[a-zA-Z0-9_.-][email protected]([a-zA-Z0-9-]+\\.)+[a-zA-Z0-9]{2,4}$";String email ="[email protected]";System.out.println(email.matches(emailRegEx));//true
2.2. split方法

String[] split(String regex):參數要求傳入一個用字串描述的Regex,然後使用該Regex描述的字串規則來匹配當前字串,並按照滿足的部分將字串拆分。
例如:

String str ="java,c#,php,javascript";String[] array = str.split(",");//[java,c#,php,javascript]System.out.println(Arrays.toString(array));
2.3. replaceAll方法

String replaceAll(String regex,String replacement):參數要求傳入一個用字串描述的Regex和一個需要替換的字串,然後使用該Regex描述的字串規則來匹配當前字串,並將滿足的部分替換為需要替換的這個字串。
例如:

String str ="abc123bcd45ef6g7890";;str = str.replaceAll("\\d+","數字");System.out.println(str);//abc數字bcd數字ef數字g數字

著作權聲明:本文為博主原創文章,未經博主允許不得轉載。

黑馬程式員--Java基礎--Regex

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.