• <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>

            kenlistian

            厚積薄發(fā). 勤為槳,思為帆

               :: 首頁(yè) :: 新隨筆 ::  :: 聚合  :: 管理 ::
              73 隨筆 :: 4 文章 :: 22 評(píng)論 :: 0 Trackbacks

            1.正則表達(dá)式筆記

            必須記住的幾個(gè)符號(hào)和組合
            .        匹配除換行符以外的所有字符一次
            ?        匹配 0 次或一次
            *        匹配 0 次或多次
            +        匹配 1 次或多次

                           使用范例:

                            x?        匹配 0 次或一次 x 字符串
                            x*        匹配 0 次或多次 x 字符串,但匹配可能的最少次數(shù),*必須跟隨一個(gè)字符后面,不能單獨(dú)出現(xiàn)
                            x+        匹配 1 次或多次 x 字符串,但匹配可能的最少次數(shù),+必須跟隨一個(gè)字符后面,不能單獨(dú)出現(xiàn)
                            .*        匹配 0 次或一次的任何字符
                            .+        匹配 1 次或多次的任何字符

            界定范圍和位置
            ^        匹配字符開頭的字符
            $         匹配字符結(jié)尾的字符
            {m}          匹配剛好是 m 個(gè) 的指定字符串
            {m,n}        匹配在 m個(gè) 以上 n個(gè) 以下 的指定字符串
            {m,}          匹配 m個(gè) 以上 的指定字符串
            []           匹配符合 [] 內(nèi)的字符
            [^]         匹配不符合 [] 內(nèi)的字符
            [0-9]         匹配所有數(shù)字字符
            [a-z]        匹配所有小寫字母字符
            [^0-9]        匹配所有非數(shù)字字符
            [^a-z]        匹配所有非小寫字母字符

            \b         匹配以英文字母,數(shù)字為邊界的字符串
            \d         匹配一個(gè)數(shù)字的字符,和 [0-9] 語(yǔ)法一樣
            \w        英文字母或數(shù)字的字符串,和 [a-zA-Z0-9] 語(yǔ)法一樣
            \s         空格,和 [\n\t\r\f] 語(yǔ)法一樣
            \B         匹配不以英文字母,數(shù)值為邊界的字符串
            \D         非數(shù)字,其他同 \d
            \S         非空格,和 [^\n\t\r\f] 語(yǔ)法一樣
            \W        非英文字母或數(shù)字的字符串,和 [^a-zA-Z0-9] 語(yǔ)法一樣

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


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


            斷言匹配: 有4個(gè)

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

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

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

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

            條件匹配: (zc:這個(gè)復(fù)雜,但也不復(fù)雜。屬于perl中的擴(kuò)展部分,略)

            Conditional Expressions

            (?(condition)yes-pattern|no-pattern)
               attempts to match yes-pattern if the condition is true, otherwise attempts to match no-pattern.

            (?(condition)yes-pattern) attempts to match yes-pattern if the condition is true, otherwise fails.

            condition may be either a forward lookahead assert, or the index of a marked sub-expression
            (the condition becomes true if the sub-expression has been matched).

             

             

            2. boost中分有match,search,replace,在vc中,其正則表達(dá)式以上\表示需要雙反斜杠表示。其中在

            match是匹配整個(gè)句子,在實(shí)際應(yīng)用中,必須是構(gòu)造整個(gè)句子的正則表達(dá),而在一篇文章匹配的話,以search用的

            比較多,如下見一個(gè)片段。沒(méi)有用到std,可見用boost在匹配查詢時(shí),其比較麻煩:

            void test123()
            {      
                CString str = "singing while youre dancing.";
                regex ee_all("\\b\\w+\\b");
                cmatch result;
                CString ret;
                while(regex_search(str, result, ee_all,match_perl)){           
                    for(int i=0; i < result.size(); i++){           
                        ret = result[i].str().c_str();
                        AfxMessageBox(ret);               
                        str = result[i].second;
                    }           
                }   
            }

            posted on 2008-04-29 11:26 kenlistian 閱讀(1259) 評(píng)論(0)  編輯 收藏 引用

            只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問(wèn)   Chat2DB   管理


            www性久久久com| 亚洲国产成人精品无码久久久久久综合| 青青草原综合久久大伊人导航| 久久99精品久久久久久不卡| 久久免费香蕉视频| 亚洲精品午夜国产VA久久成人| 国产精品久久久久国产A级| 国产一久久香蕉国产线看观看| 国产高潮国产高潮久久久91 | 久久永久免费人妻精品下载| 久久w5ww成w人免费| 久久久久亚洲AV成人网人人网站| 久久久久久久波多野结衣高潮| 久久婷婷五月综合国产尤物app | 久久精品无码一区二区app| 狠狠色婷婷久久一区二区| 精品久久久久久国产潘金莲| 久久久久亚洲精品天堂久久久久久| 欧美一区二区三区久久综| 一本一道久久a久久精品综合 | 国产激情久久久久影院老熟女免费| 久久狠狠爱亚洲综合影院| 久久精品国产福利国产琪琪| 色妞色综合久久夜夜| 日本欧美国产精品第一页久久| 成人久久久观看免费毛片| 99久久精品免费看国产一区二区三区 | 久久久久久综合网天天| 欧美国产成人久久精品| 久久婷婷五月综合色99啪ak | 性高湖久久久久久久久AAAAA| 亚洲成色999久久网站| 99久久国语露脸精品国产| 少妇高潮惨叫久久久久久| 久久亚洲sm情趣捆绑调教| 亚洲а∨天堂久久精品9966| 四虎国产永久免费久久| 亚洲国产精品久久久久婷婷老年| 久久精品麻豆日日躁夜夜躁| 亚洲精品乱码久久久久久自慰| 亚洲午夜久久久久久久久电影网|