菜鳥成長日記:Java基礎篇4 --- Regex

來源:互聯網
上載者:User

標籤:pil   號碼   基礎   alt   http   字元   分享   描述   ever   

一、初步認識Regex是對字串操作的一種邏輯公式,就是用事先定義好的一些特定字元、及這些特定字元的組合,組成一個“規則字串”,這個“規則字串”用來表達對字串的一種過濾邏輯。Regex是一種文字模式,模式描述在搜尋文本時要匹配的一個或多個字串從網上搜集了兩個例子,感覺很好貼上 例一this\s+is\s+text ---> this is text 
注意字串中的 \s+。
匹配單詞 "this" 後面的 \s+ 可以匹配多個空格,
之後匹配 is 字串,
再之後 \s+ 匹配多個空格然後再跟上 text 字串。 例二^\d+(\.\d+)? ----> 2.21
^ 定義了以什麼開始
\d+ 匹配一個或多個數字
? 設定括弧內的選項是可選的
\. 匹配 "."
可以匹配的執行個體:"5", "1.5" 和 "2.21"。 所以一個字串其實就是一個簡單的Regex。 二、基本文法

.        任意一個字串
\             "\\\\"匹配"\","\\("匹配"("。
^             匹配輸入字串開始的位置
$          匹配輸入字串結尾的位置
*        零次或多次匹配前面的字元或子運算式
+        一次或多次匹配前面的字元或子運算式
?        零次或一次匹配前面的字元或子運算式
{n}       n 是非負整數。正好匹配 n 次
{n,m}      匹配至少 n 次,至多 m 次。
{n,}         至少匹配 n 次
?            非貪心的"模式比對搜尋到的、儘可能短的字串,
              而預設的"貪心的"模式比對搜尋到的、儘可能長的字串
              在字串"oooo"中,"o+?"只匹配單個"o",而"o+"匹配所有"o"。
x|y          匹配 x 或 y。例如,‘z|food‘ 匹配"z"或"food"。‘(z|f)ood‘ 匹配"zood"或"food"。
[xyz]       匹配包含的任一字元。例如,"[abc]"匹配"plain"中的"a"。
[^xyz]        反向字元集。匹配未包含的任何字元。例如,"[^abc]"匹配"plain"中"p","l","i","n"。

[a-z]            字元範圍。匹配指定範圍內的任何字元。例如,"[a-z]"匹配"a"到"z"範圍內的任何小寫字母。
[^a-z]        反向範圍字元。匹配不在指定的範圍內的任何字元。例如,"[^a-z]"匹配任何不在"a"到"z"範圍內的任何字元。

\b           匹配一個字邊界,即字與空格間的位置。例如,"er\b"匹配"never"中的"er",但不匹配"verb"中的"er"。
\B           非字邊界匹配。"er\B"匹配"verb"中的"er",但不匹配"never"中的"er"。
\d            數字字元匹配。等效於 [0-9]。
\D           非數字字元匹配。等效於 [^0-9]。

三、執行個體
 1 /** 2  * Regex測試 3  * @author wangchong 4  * @date 2017年9月29日 上午11:25:27 5  */ 6 public class RegexMatches { 7   8     public static void main( String args[] ){ 9       10         System.out.println("測試 邊界匹配器 $ and ^");11         12         System.out.println("測試 \\");13         System.out.println("abc\\".matches(".*\\\\$"));14         System.out.println("測試 ^  ");15         System.out.println("abc\\".matches("^a.*"));16         17         System.out.println("執行個體一: Regex篩選一段文字中的正確的手機號碼");18         System.out.println();19         20         String messge = "尊敬的移動使用者18352537674您好,您的帳號132419255還剩餘額111111";21         System.out.println("資訊內容:" + messge);22         Pattern regex1 = Pattern.compile("\\D+(1\\d{10})\\D+");23         Matcher matcher = regex1.matcher(messge);24           25         while (matcher.find()) {     26             System.out.print("提取的手機號為:" + matcher.group(1));    27         }28         29    }30 31 }

運行結果

菜鳥成長日記:Java基礎篇4 --- 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.