• <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ā). 勤為槳,思為帆

               :: 首頁 :: 新隨筆 ::  :: 聚合  :: 管理 ::
              73 隨筆 :: 4 文章 :: 22 評論 :: 0 Trackbacks

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

            必須記住的幾個(gè)符號和組合
            .        匹配除換行符以外的所有字符一次
            ?        匹配 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] 語法一樣
            \w        英文字母或數(shù)字的字符串,和 [a-zA-Z0-9] 語法一樣
            \s         空格,和 [\n\t\r\f] 語法一樣
            \B         匹配不以英文字母,數(shù)值為邊界的字符串
            \D         非數(shù)字,其他同 \d
            \S         非空格,和 [^\n\t\r\f] 語法一樣
            \W        非英文字母或數(shù)字的字符串,和 [^a-zA-Z0-9] 語法一樣

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


            ?的多重定義-懶惰限定符
            *?    重復(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或者沒有則匹配,用^在于存在一個(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è)片段。沒有用到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 閱讀(1249) 評論(0)  編輯 收藏 引用
            久久免费大片| 久久综合狠狠综合久久97色| 久久伊人五月天论坛| 亚洲国产精品久久久久婷婷软件| 久久久久久国产精品美女| 国产毛片久久久久久国产毛片 | 久久亚洲AV成人无码| 老司机午夜网站国内精品久久久久久久久| 97久久精品午夜一区二区| 久久人人爽人人爽人人AV| 99久久国产精品免费一区二区| 久久精品国产AV一区二区三区| 99久久香蕉国产线看观香| 久久无码国产专区精品| 久久精品中文字幕一区| 亚洲αv久久久噜噜噜噜噜| 97精品伊人久久久大香线蕉| 日本久久久久亚洲中字幕| 精品国产91久久久久久久| 国产精品久久久久久久久| 久久av高潮av无码av喷吹| 久久中文字幕视频、最近更新| 久久久久亚洲av综合波多野结衣| 亚洲国产精品18久久久久久| 国产精品久久免费| 久久久久久噜噜精品免费直播| 日韩欧美亚洲综合久久影院Ds | 日产精品久久久久久久性色| 久久久精品免费国产四虎| 国内精品久久久久久久涩爱| 一本久久精品一区二区| 国内精品人妻无码久久久影院| 久久精品国产精品亚洲下载| 少妇人妻88久久中文字幕| 久久综合狠狠综合久久激情 | 亚洲国产成人久久综合一区77| 久久亚洲美女精品国产精品| 久久久久国产| 97久久国产亚洲精品超碰热| 精品久久久一二三区| 伊人久久免费视频|