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

            天下

            記錄修行的印記

            在vc中使用PCRE

            在vc中使用PCRE
            1. PCRE簡介
            正則表達式(regular expression),通常簡寫為regex、regexp或RE,使用單個字符串來描述、匹配一系列符合某個句法規則的字符串。
            PCRE(Perl Compatible Regular Expressions),是一個函數庫,由Philip Hazel開發,該函數庫使用與Perl5一樣的語法和語義實現了正則表達式的模式匹配功能。PCRE是免費開源的,它是由C語言實現。很多著名的開源軟件如Apache、PHP、KDE、Nginx 等都使用了PCRE。官方主頁–http:
            //www.pcre.org,目前(2016.03)最新版本是8.38。

            2 編譯 PCRE
            PCRE的作者Philip Hazel是在linux上工作的,所以編譯PCRE最好的辦法自然是configure, make, make install三步曲了。在windows下, cygwin或者MinGW都支持這么做。
            在windows下編譯 PCRE要用CMake。
            先從 http:
            //www.cmake.org 上下載最新版的CMake,
            在解壓縮后的PCRE目錄下建個子目錄build,比如我的D:\pcre-8.38\build。
            設置要編譯的源代碼的路徑以及編譯好的二進制文件存放的路徑
            CMake 會讀取源代碼目錄下的文件 CMakeLists.txt ,然后將讀到的配置以紅顏色顯示出來,此時可以根據我們的需要適當的選擇或去掉一些配置,比如加上 PCRE_SUPPORT_UTF,去掉PCRE_SUPPORT_JIT(不需要嵌入式的代碼)、PCRE_BUILD_PCRECPP(我只想要c形式的庫);還可以修改一些配置的值,比如把PCRE_NEWLINE從LF改成CRLF。然后再點一下
            "Configure”,最后點"Generate”,你會發現在build目錄里生成了一系列的vc6的工程文件以及一些.h文件和.c文件。

            3 在工程中使用PCRE
            包含頭文件 #include “pcre.h”
            鏈接靜態庫 #pragma comment(lib,“pcre.lib”)
            在項目”預處理器定義“中加上PCRE_STATIC

            示例代碼:
            #include 
            "stdafx.h"
            #define PCRE_STATIC
            #include 
            "pcrecpp.h"
            #include 
            <vector>
            #include 
            <iostream>
            #include 
            <string>
            #pragma comment(lib,
            "lib/pcrecppd.lib")
            #pragma comment(lib,
            "lib/pcred.lib")
            using namespace std;
            using namespace pcrecpp;

            int Test1()
            {
                
            #define OVECCOUNT 30    /* should be a multiple of 3 */
                pcre            
            *re; 
                
            const char      *error;
                
            int             erroffset;
                
            int             ovector[OVECCOUNT];
                
            int             rc, i;

                
            char            src    [] = "111 <title>Hello World</title> 222";
                
            char            pattern   [] = "<title>(.*)</title>";

                printf(
            "String : %s\n", src);
                printf(
            "Pattern: \"%s\"\n", pattern);


                re 
            = pcre_compile(pattern, 0&error, &erroffset, NULL);
                
            if (re == NULL) {
                    printf(
            "PCRE compilation failed at offset %d: %s\n", erroffset, error);
                    
            return 1;
                }

                rc 
            = pcre_exec(re, NULL, src, strlen(src), 00, ovector, OVECCOUNT);
                
            if (rc < 0) {
                    
            if (rc == PCRE_ERROR_NOMATCH) printf("Sorry, no match \n");
                    
            else    printf("Matching error %d\n", rc);
                    free(re);
                    
            return 1;
                }

                printf(
            "\nOK, has matched \n\n");

                
            for (i = 0; i < rc; i++) {
                    
            char *substring_start = src + ovector[2*i];
                    
            int substring_length = ovector[2*i+1- ovector[2*i];
                    printf(
            "%2d: %.*s\n", i, substring_length, substring_start);
                }

                free(re);
                
            return 0
            }


            int main()  
            {  
                Test1();
                
            return 0;
            }  


            posted on 2016-03-02 10:04 天下 閱讀(766) 評論(0)  編輯 收藏 引用 所屬分類: C/C++Win32

            <2016年9月>
            28293031123
            45678910
            11121314151617
            18192021222324
            2526272829301
            2345678

            導航

            統計

            常用鏈接

            留言簿(4)

            隨筆分類(378)

            隨筆檔案(329)

            鏈接

            最新隨筆

            搜索

            最新評論

            无码人妻久久一区二区三区蜜桃 | 久久国产一片免费观看| 欧美日韩精品久久免费| 中文字幕久久久久人妻| 精品国产福利久久久| 色狠狠久久综合网| 国产精品美女久久久网AV| 久久青青草原精品国产软件| 久久天天躁狠狠躁夜夜网站| 久久久久99精品成人片牛牛影视 | 狠狠色噜噜狠狠狠狠狠色综合久久| 观看 国产综合久久久久鬼色 欧美 亚洲 一区二区 | 久久亚洲sm情趣捆绑调教| 国产精品一区二区久久国产| 久久亚洲国产精品五月天婷| 99久久99久久久精品齐齐| 亚洲国产成人精品久久久国产成人一区二区三区综 | 91精品婷婷国产综合久久| 亚洲日韩中文无码久久| 久久精品亚洲精品国产欧美| av午夜福利一片免费看久久 | 精品久久久久久久久久中文字幕 | 亚洲午夜精品久久久久久人妖| 久久久久亚洲AV无码观看| 久久天天躁狠狠躁夜夜不卡 | 久久久久国产精品嫩草影院| 精品午夜久久福利大片| 久久亚洲精品中文字幕| 青草国产精品久久久久久| 久久久久久久久波多野高潮| 亚洲欧美成人久久综合中文网 | 国产精品久久国产精麻豆99网站| 久久久久久精品免费看SSS| 人妻系列无码专区久久五月天| 久久免费99精品国产自在现线 | 午夜福利91久久福利| 久久国产亚洲精品| 国产精品99久久久久久宅男小说| 一97日本道伊人久久综合影院| 免费一级做a爰片久久毛片潮| 色婷婷久久久SWAG精品|