正則表達式學習小記


          這幾天一直在努力的學習很多東西,因為是自學,走了很多彎路。特別是看到一些比較難得知識點時,心理總是很焦急,而且能夠影響學習效率的東西太多了。一個安靜的環境,自由的環境,舒緩的心情感覺真的很重要。就像今天下午的我,心理感覺總是亂糟糟的,一會想做這個一會想做那個,結果一個下午什么也沒干成。蛋疼啊!

          大四了,找工作的鴨梨是真真切切的來了。突然感覺公司要求的技術自己一點都不懂,然后就華麗麗的急了。面試了兩次,我就放下了。感覺這樣的自己很難找到好的工作,還是趕緊靜下心來學習吧!畢竟只要知道學習就不會太晚,給自己制定了一個方向:網站。因為專業已經學習了java,就找相關的資料啊 視頻的學習起來:html-->css-->javascript-->jsp-->php-->jsp。大概就是這么一個路線吧!雖然這幾天好多人都在我跟前說:這個技術前景不怎么好,讓我學習ios啊什么的移動開發。可是我感覺既然自己有java的基礎就要好好利用,畢竟技術在於:精。好吧,不扯了!進入主題!

          今天學習的是正則表達,因為在以前的學習和這段時間的javascript等學習發現正則表達式正的很重要、很方便、很實用。就想着好好學習學習,了解一番。找了個正則表達式30分鍾入門教程就看了起來,現在看的基本有個眉目了。打算再看一遍,把該注意的地方和自己的測驗寫出來,做個記錄。

          正則表達式

             主要思想:一種描述字符串結構模式的形式化語言
             1.結構模式:有結構的字符串,而不是字符流
             2.形式化:用形式化的表達方法應付變化的情況
           字符組簡記:
                 [\d]                 [0-9]         匹配0-9之間的數字字符
                 [\D]      [^0-9]       匹配除0-9數字字符之外的字符
      [\w]      [0-9a-zA-Z]   匹配0-9和a-z和A-Z之間的字符
      [\W]      [^0-9a-zA-Z]  匹配除0-9、a-z、A-Z之外的字符
      [\s]               匹配空白字符(回車 制表 換行 空格)
      [\S]               匹配非空白字符
                 [^x]              匹配除了x以外的任意字符
      [^aeiou]            匹配除了aeiou這幾個字母以外的任意字符
     
           常用的限定符
         
表1.常用的元字符
代碼 說明
. 匹配除換行符以外的任意字符
\w 匹配字母或數字或下划線或漢字
\s 匹配任意的空白符
\d 匹配數字
\b 匹配單詞的開始或結束
^ 匹配字符串的開始
$ 匹配字符串的結束

                        在上表中的\b、^、$   元字符^(和數字6在同一個鍵位上的符號)和$都匹配一個位置,這和\b有點類似。^匹配你要用來查找的字符串的開頭,$匹配結尾。這兩個代碼在驗證輸入的內容時非常有用,比如一個網站如果要求你填寫的QQ號必須為5位到12位數字時,可以使用:^\d{5,12}$  

        ^  字符用來匹配 整個字符串 的開頭
        $   字符用來匹配 整個字符串 的末尾
        \A  用來匹配整個字符串的開頭
        \Z  用來匹配整個字符串的末尾

               這里需要說明的是:在大多數時候  上面的^和\A、$和\Z是可以互換使用的,但是要注意的是它們必須對應出現,即^和$、\A和\Z

轉義字符:

     如果你想查找元字符本身的話,比如你查找.,或者*,就出現了問題:你沒辦法指定它們,因為它們會被解釋成別的意思。這時你就得使用\來取消這些字符的特殊意義。因    此,你應該使用\.\*。當然,要查找\本身,你也得用\\.

          例如:deerchao\.net匹配deerchao.netC:\\Windows匹配C:\Windows

特殊字符簡記法:點號
        .  它可以匹配幾乎所有字符   (除了換行符 \n)
        點號本身用  \.  匹配
        字符內部  [.]也只能匹配點號
 
量詞:限定之前出現的次數
               *  表示之前出現的字符可以出現0次到無窮多次
               ? 表示之前出現的字符 至多只能出現一次
                + 表示之前出現的字符 至少要出現一次
 
區間量詞:規定字符出現次數
  {min,max}   設定上限max   設定下限min
  {min,}          設定下限min
  {number}    設定一個具體的出現次數(連續重復匹配number次)
  *  = {0,}
  + ={1,}
  ? ={0,1}
量詞的局限性:只能規定之前字符或字符組出現的次數
            規定字符串出現的次數就必須使用(....) 然后加上量詞
                 (as)+     匹配asasas
多選結構:表示某個位置可能出現的字符串
                形式:(...|...)    (...|...|...)   
        
括號的作用:捕獲分組
將括號中的字表達式捕獲的字符串存到匹配結果中,供匹配完成后訪問
形式:(...)
注意事項:
1.使用括號 就存在捕獲分組
2.捕獲分組按照開括號從左至右的順序進行編號,潛逃也是一樣
3.如果捕獲分組后面存在量詞,則匹配結果中,則捕獲分組保存的是字表達式最后一次匹配的字符串
 
不捕獲分組
形式:(? : ...)
 
反相引用:\1
 
錨點:規定匹配的位置
形式:
 邊界條件         單詞分界符錨點:\b    (只對英文字符 數字字符有用  不支持中文字符) 
單詞分界符的一側是單詞字符 (\b)另一側是非單詞字符
 
^  字符用來匹配 整個字符串 的開頭
$   字符用來匹配 整個字符串 的末尾
\A  用來匹配整個字符串的開頭
\Z  用來匹配整個字符串的末尾
 
 字符類:

要想查找數字,字母或數字,空白是很簡單的,因為已經有了對應這些字符集合的元字符,但是如果你想匹配沒有預定義元字符的字符集合(比如元音字母a,e,i,o,u),應該怎么辦?

很簡單,你只需要在方括號里列出它們就行了,像[aeiou]就匹配任何一個英文元音字母[.?!]匹配標點符號(.或?或!)

   ***    這里我們要重點理解一下[.?!]這個例子:上面我們已經記錄了 .  對!就是這個點號,我們說當點號在字符串中[.]和轉義\.時只能匹配點號本身,

             所以這里的[.?!]匹配的就是(.或?或!)

 

現在我們來看看一個例子:\(?0\d{2}[) -]?\d{8}

          首先是一個轉義字符\來轉義(  后面的?表示出現的次數0或1次,然后是匹配數字0,然后匹配一個數字(\d)重復兩次{2},然后就是一個字符類[) -]后面的?同樣表示[]中的三個字符出現0或1次,讓后就是數字字符重復出現8次  像(010)88886666,或022-22334455,或02912345678

 

環視
由於錨點對位置的判斷不夠靈活,所以引進環視
應用子表達式對位置進行判斷
形式:
         (?=...) 
         (?!...)
         (?<=...)   
         (?<!...)

     

匹配模式:用來改變某些結構的匹配模式
              形式:
                        I:   不區分大小寫(不對英文單詞區分大小寫)
                       S:    點號通配(在此模式下 .  號也能匹配換行符)
                        M:   多行模式(更改^和$符的)
                        X:     注釋模式

      


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM