Regex學習記錄

來源:互聯網
上載者:User

一,字元匹配
1。 \b  代表著單詞的開頭或結尾,也就是單詞的分界處。雖然通常英文的單詞是由空格,標點符號或者換行來分隔的,但是\b並不匹配這些單詞分隔字元中的任何一個,它只匹配一個位置。
2。 .   是另一個元字元,匹配除了分行符號以外的任一字元。
3。 \n 分行符號
4。 \d 匹配一個數字 【0,1,2,3.....】
5。  \w  匹配字母或數字或底線或漢字等
6。  \s  匹配任意的空白符,包括空格,定位字元(Tab),分行符號,中文全形空格等
7。  ^ 匹配字串的開始
8。  $ 匹配字串的結束
9。  \ 取消字元的特殊意義,當然如何尋找\ 也要用\,那麼就是\\
10。  []  匹配其中的任何一個字元,可以是範圍,也可以是指定的特定的字元
          如果是範圍使用“-”符號,否則直接指定即可
11。  |   相當於編碼中的or 前後只要有一個滿足條件,即可匹配成功。
12。  ()  將括弧中的所有Regex作為一個整體

二,重複匹配數量
1。  *   同樣是元字元,不過它代表的不是字元,也不是位置,而是數量——它指定*前邊的內容可以連續重複使用任意次。
2。  {一個整數} 表示大括弧前面的重複出現的次數
     {一個小整數,一個大整數} 重複匹配的次數,最少不能少於,最大不能大於

        例子:0\d{2}-\d{8}  以0開頭,後面跟兩位元字,以"-"符號串連,後面跟8個數字
3。  +   這裡的+是和*類似的元字元,不同的是*匹配重複匹配任意次(可能是0次),而+則重複匹配1次或更多次
4。 ?   重複零次或一次,也就是可有可無

三反義,及其他
.    常用的反義
表3.常用的反義代碼 代碼/文法 說明
\W 匹配任意不是字母,數字,底線,漢字的字元
\S 匹配任意不是空白符的字元
\D 匹配任意非數位字元
\B 匹配不是單詞開頭或結束的位置
[^x] 匹配除了x以外的任一字元
[^aeiou] 匹配除了aeiou這幾個字母以外的任一字元
18    (?=exp)  也叫零寬度正預測先行斷言
      (?<=exp) 也叫零寬度正回顧後發斷言

 

 

貪婪與懶惰

當Regex中包含能接受重複的限定符時,通常的行為是(在使整個運算式能得到匹配的前提下)匹配儘可能多的字元。以這個運算式為例:a.*b,它將會匹配最長的以a開始,以b結束的字串。如果用它來搜尋aabab的話,它會匹配整個字串aabab。這被稱為貪婪匹配。

有時,我們更需要懶惰匹配,也就是匹配儘可能少的字元。前面給出的限定符都可以被轉化為懶惰匹配模式,只要在它後面加上一個問號?。這樣.*?就意味著匹配任意數量的重複,但是在能使整個匹配成功的前提下使用最少的重複。現在看看懶惰版的例子吧:

a.*?b匹配最短的,以a開始,以b結束的字串。如果把它應用於aabab的話,它會匹配aab(第一到第三個字元)ab(第四到第五個字元)

為什麼第一個匹配是aab(第一到第三個字元)而不是ab(第二到第三個字元)?簡單地說,因為Regex有另一條規則,比懶惰/貪婪規則的優先順序更高:最先開始的匹配擁有最高的優先權——The match that begins earliest wins。

表5.懶惰限定符
代碼/文法 說明
*? 重複任意次,但儘可能少重複
+? 重複1次或更多次,但儘可能少重複
?? 重複0次或1次,但儘可能少重複
{n,m}? 重複n到m次,但儘可能少重複
{n,}? 重複n次以上,但儘可能少重複

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.