• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            沒畫完的畫

            喂馬 劈柴 BBQ~
            posts - 37, comments - 55, trackbacks - 0, articles - 0
              C++博客 ::  :: 新隨筆 :: 聯系 :: 聚合  :: 管理

            正則表達式

            Posted on 2008-09-27 10:44 沒畫完的畫 閱讀(146) 評論(0)  編輯 收藏 引用

            1.概念:
               一個正則表達式,就是用某種模式去匹配一類字符串的一個公式。
               
            2.Perl兼容正則表達式
            必須記住的幾個符號和組合
            .           匹配除換行符以外的所有字符一次
            ?           匹配 0 次或一次
            *           匹配 0 次或多次
            +           匹配 1 次或多次

            使用范例:
            x?      匹配 0 次或一次 x 字符串
            x*      匹配 0 次或多次 x 字符串,但匹配可能的最少次數,*必須跟隨一個字符后面,不能單獨出現
            x+      匹配 1 次或多次 x 字符串,但匹配可能的最少次數,+必須跟隨一個字符后面,不能單獨出現
            .*      匹配 0 次或一次的任何字符
            .+      匹配 1 次或多次的任何字符

            界定范圍和位置
            ^           匹配字符開頭的字符
            $           匹配字符結尾的字符
            {m}           匹配剛好是 m 個 的指定字符串
            {m,n}         匹配在 m個 以上 n個 以下 的指定字符串
            {m,}          匹配 m個 以上 的指定字符串
            []            匹配符合 [] 內的字符
            [^]          匹配不符合 [] 內的字符
            [0-9]         匹配所有數字字符
            [a-z]         匹配所有小寫字母字符
            [^0-9]        匹配所有非數字字符
            [^a-z]        匹配所有非小寫字母字符
              
            \b           不屬于空白字符,向前縮進一個字符
            \d           匹配一個數字的字符,和 [0-9] 語法一樣
            \w          英文字母或數字的字符,和 [a-zA-Z0-9]+ 語法一樣
            \s           空格,和 [\n\t\r\f] 語法一樣
            \B           匹配不以英文字母,數值為邊界的字符串
            \D           非數字,其他同 \d
            \S           非空格,和 [^\n\t\r\f] 語法一樣
            \W          非英文字母或數字的字符串,和 [^a-zA-Z0-9] 語法一樣

            a|b|c        匹配符合a字符 或是b字符 或是c字符 的字符串
            abc          匹配含有 abc 的字符串
            轉義:       使用\ 來取消元字符的特殊意義。包括 . * + \  [ ] { } ( ) ^ $

            ?      的多重定義-懶惰限定符
            *?      重復任意次,但盡可能少重復
            +?        重復1次或更多次,但盡可能少重復
            ??        重復0次或1次,但盡可能少重復
            {n,m}?      重復n到m次,但盡可能少重復
            {n,}?       重復n次以上,但盡可能少重復


            斷言匹配: 有4個

            (?=exp)     零寬先行斷言,它匹配文本中的某些位置,這些位置的后面能匹配給定的后綴exp。
                          比如\w+(?=ing\b),匹配以ing結尾的單詞的前面部分(除了ing以外的部分),
                          zc:根據后綴匹配而已。和$區別在于$是行尾匹配。
                          如I'm singing while you're dancing.  它會匹配sing和danc。

            (?<=exp)    零寬后行斷言,它匹配文本中的某些位置,這些位置的前面能給定的前綴匹配exp。
                          如(?<=\bre)\w+\b會匹配以re開頭的單詞的后半部分(除了re以外的部分),
                          zc:匹配前綴。
                          例如在查找reading a book時,它匹配ading。

            (?!exp)      零寬負向先行斷言。會匹配后綴exp不存在的位置。
                          zc: 若不是exp或者沒有則匹配,用^在于存在一個不匹配某個exp的其他字符,
                          而!保證不匹配exp外可以不跟任何字符。
                          如:\d{3}(?!\d)匹配三位數字,而且這三位數字的后面不能是數字。
                          也可以是只有前3位數字。比較\d{3}(^\d)有區別.

            (?<!exp)     零寬負向后行斷言。查找前綴exp不存在的位置.

            常用語法:
            1,正則里一些特殊字符
              () 將表達式結組
              [] 尋找一組字符
              \d 等于 [0-9]
              \D 等于 [^0-9]
              \w 等于 [0-9A-Za-z_]
              \W 等于 [^0-9A-Za-z_]
              \s 等于 [\f\n\r\t ]
              \S 等于 [^\f\n\r\t ]
              . 等于 [^\n]

            2,關于一些特殊符號
              \b 不屬于空白字符,向前縮進一個字符
              \t 屬于空白字符,匹配制表符
              \r 屬于空白字符,匹配回車符
              \a 不屬于空白字符,匹配鬧鐘符
              \e 不屬于空白字符,匹配轉義符
              \033 不屬于空白字符,匹配八進制符
              \x1B 不屬于空白字符,匹配十六進制符
              \c[ 不屬于空白字符,匹配控制字符
               屬于空白字符,匹配空格
               屬于空白字符,匹配制表符
              \f 屬于空白字符,匹配換頁符
              \n 屬于空白字符,匹配換行符
              \0 不屬于空白字符,功能不詳
              \c 不屬于空白字符,功能不詳
              \x 不屬于空白字符,功能不詳

            3,注意正則里的選擇符的特殊性
              選擇運算符是所有運算符中優先級最低的,這意味著它最后執行。

            4,正則里的限定符的一些經典用法
              限定符常常與一些字符或詞聯合使用
              * 匹配任意數個;
              + 匹配一個或多個;
              ? 匹配零個或一個;
              {n} 匹配 n 個;
              {n,m} 匹配 n 至 m 個;
              {n,} 匹配 n 和 n 個以上;

              限定符貪婪好像與生俱有的。在缺省狀態下,*或+限定符匹配滿足正則表達式的一個范式的最大實例數。
              可用?號顯式的規定限定符的不貪婪。如果問號放在另一個限制符之后(甚至另一個問號之后),都可以使限定符不貪婪。

            5,聲明與斷言
              首先注意聲明的長度為 0;
              Perl種有一組控制大小寫和換碼的聲明:
              \u 使下一個字母變大寫;
              \l 使下一個字母變小寫;
              \U 使文本的剩余字符變成大寫;
              \L 使文本的剩余字符變成小寫;
              \Q 會除字母之外的其他字符進行換碼處理,直至遇到 \E 聲明、常規表達式結束或者字串結束。
              \A聲明和脫字符號(^)匹配字串的開始;
              \Z聲明和美元符號($)匹配字串的結束或剛好在字串結束前的換行符;
              \z 只匹配字串的結束;
              \b 匹配一個單詞(字)邊界;
              \B 匹配一個非單詞(字)邊界;

              (?#text) 忽略括號內的注釋文本;
              (?:pattern) 與組一致,但匹配時不生成$1,$2;
              (?imsx:pattern) 與組一致,但匹配時不生成$1,$2,在特定的風格有效期間,內嵌風格匹配修飾符;
              (?=pattern) 前看聲明,如果正則表達式在下一次匹配 pattern 風格,就開始匹配,而且不影響匹配效果。
                如/\w+(?=\t)/將匹配制表符是否恰好在一個字\w+后面出現,并且制表符不添加到$&的值中;
              (?!pattern) 如果正則表達式在后面不匹配 pattern ,才會開始匹配。如/foo(?!bar)/,只有當出現 foo,
                并且后面不出現 bar 時才開始匹配;
              (?<=pattern) 后看聲明,只有在pattern已經匹配下面的表達式,并且不將 pattern 的結果放入$&變量中,
                才匹配下面的語句。如/(?<=\t)\W+/匹配制表符是否恰好在\W+前出現,但又不將制表符送到$& 中;
              (? (?{code}) 表示對 code 的使用是試驗性的。如果返回真,就認為是與(?:pattern)斷言同一行里的匹配。
                code 不插入變量。這個斷言僅僅在 use re 'eval' 編譯指示符時才有效;
              (?>pattern) 如果類型鎖定在當前位置,就使用單獨的 pattern 匹配子字符串。如正則表達式/^(?>a*)ab/永遠不會匹配,
                因為語句(?>a*)將匹配字符串開頭所有的 a 字符,并刪除與 ab 匹配的字符 a;
              (!<=pattern) 非后看聲明,與后看聲明意思相反;
              (!=pattern) 非前看聲明,與前看聲明意思相反;
              (?(condition)yes-pattern|no-pattern) 條件表達式——條件語句或者是一個圓括號中的整數,或者是一個斷言;
              (?(condition)yes-pattern)
              (?imsx) 嵌入風格匹配修飾符。當要把表達式修改符嵌入在變量中,然后把變量用在不指定自己的修飾符的一般規則表達式中;
              (?-imsx) 這個斷言很有用——后面帶任何內容都會關閉修飾符,直到出現另一個嵌入的修飾符。

            亚洲国产精品久久久久婷婷老年| 模特私拍国产精品久久| 99久久成人国产精品免费 | 国产一区二区三区久久精品| 久久久精品人妻一区二区三区蜜桃| 久久人人爽人人爽人人AV| 欧美亚洲另类久久综合| 亚洲欧美日韩精品久久亚洲区 | yellow中文字幕久久网| 欧美伊人久久大香线蕉综合| 狠狠狠色丁香婷婷综合久久五月 | 精品久久香蕉国产线看观看亚洲| 日韩欧美亚洲综合久久影院Ds| 亚洲精品国精品久久99热一| 久久97久久97精品免视看秋霞| 亚洲AV无一区二区三区久久| 久久激情亚洲精品无码?V| 久久精品一本到99热免费| 欧美精品丝袜久久久中文字幕 | 久久中文娱乐网| 伊人久久精品无码二区麻豆| 久久天天躁狠狠躁夜夜不卡| 国产精品18久久久久久vr| 无码人妻久久久一区二区三区| 久久久久97国产精华液好用吗| 国产精品福利一区二区久久| 久久天天躁狠狠躁夜夜avapp| 中文字幕热久久久久久久| 亚洲精品国产自在久久| 久久精品中文字幕第23页| 国产成人精品久久亚洲高清不卡| 久久精品国产亚洲AV麻豆网站| 久久精品国产亚洲av麻豆图片 | 久久91精品国产91久久户| 久久WWW免费人成一看片| 久久强奷乱码老熟女网站| 一本色综合久久| 久久精品国产亚洲αv忘忧草| 国内高清久久久久久| 欧美大香线蕉线伊人久久| 久久91精品国产91久久户|