java ->Regex

來源:互聯網
上載者:User

標籤:超過   express   擷取IP地址   就是   手機   \n   位置   出現   bool   

Regex的概念

Regex(英語:Regular Expression,在代碼中常簡寫為regex)。

Regex是一個字串,使用單個字串來描述、用來定義匹配規則,匹配一系列符合某個句法規則的字串。在開發中,Regex通常被用來檢索、替換那些符合某個規則的文本。Pattern

Regex的匹配規則

參照協助文檔,在Pattern類中有Regex的的規則定義,Regex中明確區分大小寫字母。我們來學習文法規則。

Regex的文法規則:

字元:x

含義:代表的是字元x

例如:匹配規則為 "a",那麼需要匹配的字串內容就是 ”a”

 

字元:\\

含義:代表的是反斜線字元‘\‘

例如:匹配規則為"\\" 那麼需要匹配的字串內容就是 ”\”

 

字元:\t

含義:定位字元

例如:匹配規則為"\t" ,那麼對應的效果就是產生一個定位字元的空間

 

字元:\n

含義:分行符號

例如:匹配規則為"\n",那麼對應的效果就是換行,游標在原有位置的下一行

 

字元:\r

含義:斷行符號符

例如:匹配規則為"\r" ,那麼對應的效果就是斷行符號後的效果,游標來到下一行行首

 

字元類:[abc]

含義:代表的是字元a、b 或 c

例如:匹配規則為"[abc]" ,那麼需要匹配的內容就是字元a,或者字元b,或字元c的一個

 

字元類:[^abc]

含義:代表的是除了 a、b 或 c以外的任何字元

例如:匹配規則為"[^abc]",那麼需要匹配的內容就是不是字元a,或者不是字元b,或不是字元c的任意一個字元

 

字元類:[a-zA-Z]

含義:代表的是a 到 z 或 A 到 Z,兩頭的字母包括在內

例如:匹配規則為"[a-zA-Z]",那麼需要匹配的是一個大寫或者小寫字母

 

字元類:[0-9]

含義:代表的是 0到9數字,兩頭的數字包括在內

例如:匹配規則為"[0-9]",那麼需要匹配的是一個數字

 

字元類:[a-zA-Z_0-9]

含義:代表的字母或者數字或者底線(即單詞字元)

例如:匹配規則為" [a-zA-Z_0-9] ",那麼需要匹配的是一個字母或者是一個數字或一個下滑線

 

預定義字元類:.

含義:代表的是任何字元

例如:匹配規則為" . ",那麼需要匹配的是一個任一字元。如果,就想使用 . 的話,使用匹配規則"\\."來實現

 

預定義字元類:\d

含義:代表的是 0到9數字,兩頭的數字包括在內,相當於[0-9]

例如:匹配規則為"\d ",那麼需要匹配的是一個數字

 

預定義字元類:\w

含義:代表的字母或者數字或者底線(即單詞字元),相當於[a-zA-Z_0-9]

例如:匹配規則為"\w ",,那麼需要匹配的是一個字母或者是一個數字或一個下滑線

 

邊界匹配器:^

含義:代表的是行的開頭

例如:匹配規則為^[abc][0-9]$ ,那麼需要匹配的內容從[abc]這個位置開始, 相當於左雙引號

 

邊界匹配器:$

含義:代表的是行的結尾

例如:匹配規則為^[abc][0-9]$ ,那麼需要匹配的內容以[0-9]這個結束, 相當於右雙引號

 

邊界匹配器:\b

含義:代表的是單詞邊界

例如:匹配規則為"\b[abc]\b" ,那麼代表的是字母a或b或c的左右兩邊需要的是非單詞字元([a-zA-Z_0-9])

 

數量詞:X?

含義:代表的是X出現一次或一次也沒有

例如:匹配規則為"a?",那麼需要匹配的內容是一個字元a,或者一個a都沒有

 

數量詞:X*

含義:代表的是X出現零次或多次

例如:匹配規則為"a*" ,那麼需要匹配的內容是多個字元a,或者一個a都沒有

 

數量詞:X+

含義:代表的是X出現一次或多次

例如:匹配規則為"a+",那麼需要匹配的內容是多個字元a,或者一個a

 

數量詞:X{n}

含義:代表的是X出現恰好 n 次

例如:匹配規則為"a{5}",那麼需要匹配的內容是5個字元a

 

數量詞:X{n,}

含義:代表的是X出現至少 n 次

例如:匹配規則為"a{5, }",那麼需要匹配的內容是最少有5個字元a

 

數量詞:X{n,m}

含義:代表的是X出現至少 n 次,但是不超過 m 次

例如:匹配規則為"a{5,8}",那麼需要匹配的內容是有5個字元a 到 8個字元a之間

 

Regex規則匹配練習

請寫出滿足如下匹配規則的字串:

規則:"[0-9]{6,12}"

該規則需要匹配的內容是:長度為6位到12位的數字。

如:使用資料"123456789"進行匹配結果為true;

使用資料"12345"進行匹配結果為false。

 

規則:"1[34578][0-9]{9}"

該規則需要匹配的內容是:11位的手機號碼,第1位為1,第2位為3、4、5、7、8中的一個,後面9位為0到9之間的任一數字

如:使用資料"12345678901"進行匹配結果為false;

使用資料"13312345678"進行匹配結果為true。

 

規則:"a*b"

該規則需要匹配的內容是:在多個a或零個a後面有個b;b必須為最後一個字元。

如:使用資料"aaaaab"進行匹配結果為true;

使用資料"abc"進行匹配結果為false。

 

字串類中涉及Regex的常用方法

l  public boolean matches(String regex) //判斷字串是否匹配給定的規則

舉例:校正qq號碼.

    1: 要求必須是5-15位元字

    2: 0不能開頭

代碼示範:

    String qq = "604154942";

    String regex = "[1-9][0-9]{4,14}";

    boolean flag2 = qq.matches(regex);

 

舉例:校正手機號碼

    1:要求為11位元字

2:第1位為1,第2位為3、4、5、7、8中的一個,後面9位為0到9之間的任一數字。

代碼示範:

    String phone = "18800022116";

    String regex = "1[34578][0-9]{9}";

    boolean flag = phone.matches(regex);

 

l  public String[] split(String regex)   //根據給定Regex的匹配規則,拆分此字串

舉例:分割出字串中的的數字

代碼示範:

String s = "18-22-40-65";

    String regex = "-";

    String[] result = s.split(regex);

代碼示範:

    String s = "18 22 40 65";

    String regex = " ";

    String[] result = s.split(regex);

 

l  public String replaceAll(String regex,String replacement) //將符合規則的字串內容,全部替換為新字串

舉例:把文字中的數字替換成*

代碼示範:

    String s = "Hello12345World6789012";

    String regex = "[0-9]";

    String result = s.replaceAll(regex, "*");

Regex練習

l  匹配正確的數字

匹配規則:

    匹配正整數:”\\d+”

    匹配正小數:”\\d+\\.\\d+” 

    匹配負整數:”-\\d+”

    匹配負小數:”-\\d+\\.\\d+”

    匹配保留兩位小數的正數:”\\d+\\.\\d{2}”

    匹配保留1-3位小數的正數:”\\d+\\.\\d{1,3}”

 

l  匹配合法的郵箱

匹配規則:

    ”[a-zA-Z_0-9][email protected][a-zA-Z_0-9]+(\\.[a-zA-Z_0-9]+)+”

    ”\\[email protected]\\w+(\\.\\w+)+”

 

l  擷取IP地址(192.168.1.100)中的每段數字

匹配規則:

    ”\\.”

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.