青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

woaidongmao

文章均收錄自他人博客,但不喜標(biāo)題前加-[轉(zhuǎn)貼],因其丑陋,見諒!~
隨筆 - 1469, 文章 - 0, 評論 - 661, 引用 - 0
數(shù)據(jù)加載中……

怎么使用PCRE庫?

一直找PCRE的學(xué)習(xí)資料,網(wǎng)上沒有發(fā)現(xiàn)很全面的,回過頭了仔細看了一下PCRE源碼dochtml下的資料,發(fā)現(xiàn)其實這些文檔就是非常不錯的學(xué)習(xí)材料。

今天看了一下如何使用PCRE,還沒有涉及到PCRE原理和實現(xiàn)的代碼。我們可以在http://www.pcre.org/上下載到pcre的代碼,下載到的源文件pcre-x.x.tar.bz2在linux下面很容易就可以被編譯和安裝(x86 系列cpu哦)。

./configure

make

make install

PCRE編譯安裝之后,以一個lib庫的方式提供給用戶程序進行使用,PCRE lib 提供了一組API,通過這一組API可以實現(xiàn)類似于Perl語法的正則表達式查找和匹配的功能。(PCREE library is a set of functions that implement regular expression pattern matching using the same syntax and semantics as Perl, with just a few differences.)

要想使用好PCRE,要了解很多正則表達式的內(nèi)容、同時需要對PCRE進行很多的配置,從而使其支持不同的模式和規(guī)格。在這里只是簡單的描述一下使用PCRE的方法,不涉及配置和正則表達式語法的內(nèi)容。

使用PCRE主要是使用下面的四個函數(shù),對這四個函數(shù)有了了解,使用PCRE庫的時候就會簡單很多。

pcre_compile() /pcre_compile2()

pcre_study()

pcre_exec()

1. pcre_compile() /pcre_compile2(), 正則表達式在使用之前要經(jīng)過編譯。

pcre *pcre_compile(const char *pattern, int options, const char **errptr, int *erroffset, const unsigned char *tableptr);

pcre *pcre_compile2(const char *pattern, int options, int *errorcodeptr, const char **errptr, int *erroffset, const unsigned char *tableptr);

編譯的目的是將正則表達式的pattern轉(zhuǎn)換成PCRE引擎能夠識別的結(jié)構(gòu)(struct real_pcre)。

還沒有對編譯的過程進行分析.

2. pcre_study(),對編譯后的正則表達式結(jié)構(gòu)(struct real_pcre)進行分析和學(xué)習(xí),學(xué)習(xí)的結(jié)果是一個數(shù)據(jù)結(jié)構(gòu)(struct pcre_extra),這個數(shù)據(jù)結(jié)構(gòu)連同編譯后的規(guī)則(struct real_pcre)可以一起送給pcre_exec單元進行匹配.

If a compiled pattern is going to be used several times, it is worth spending more time analyzing it in order to speed up the time taken for matching. The function pcre_study() takes a pointer to a compiled pattern as its first argument. If studying the pattern produces additional information that will help speed up matching, pcre_study() returns a pointer to a pcre_extra block, in which the study_data field points to the results of the study.

pcre_study()的引入主要是為了加速正則表達式匹配的速度.(為什么學(xué)習(xí)后就能加速呢?)這個還是比較有用的,可以將正則表達式編譯,學(xué)習(xí)后保存到一個文件或內(nèi)存中,這樣進行匹配的時候效率比較搞.snort中就是這樣做的.

3. pcre_exec(),根據(jù)正則表達式到指定的字符串中進行查找和匹配,并輸出匹配的結(jié)果.

The function pcre_exec() is called to match a subject string against a compiled pattern, which is passed in the code argument. If the pattern has been studied, the result of the study should be passed in the extra argument. This function is the main matching facility of the library, and it operates in a Perl-like manner.

4. Snort中如何使用PCRE呢?snort中以插件的形式調(diào)用PCRE進行正則表達式的匹配。

1)進行正則表達式的初始化。

InitializeDetection--> RegisterRules-->RegisterOneRule-->PCRESetup(Just for OPTION_TYPE_PCRE)->pcre_compile and pcre_study. All will be stored in a structure called PCREInfo in the memory.

2.) 規(guī)則的匹配。DetectionCheckRule-->ruleMatch-->ruleMatchInternal-->pcreMatch(OPTION_TYPE_PCRE)->pcre_test-->pcre_exec.

5.編譯PCRE on TILERA platform.

1) tar -xjvf pcre-7.9.tar.bz2

2) Modify config.sub to support tile architecture.

We wish to use DE>HOST=tileDE>, but the DE>tileDE> architecture is not yet standard, so may not exist in the DE>config.subDE> file. If necessary, add these lines in the alphabetical list of architectures (typically about 1,100 lines down):

 tile*)
  basic_machine=tile-tilera
  os=-linux-gnu
  ;;
3) Compile PCRE on tile Linux. 
** Start up TILERA card through tile-monitor.
tile-monitor --pci --mount-tile /usr  \
  --mount-tile /bin --mount-tile /sbin --mount-tile /etc --mount-tile /lib \
  --mkdir /mnt/libs --mount /libs-compile /mnt/libs \
  --mkdir /mnt/mde  --mount $TILERA_ROOT /mnt/mde
* ./configure --build=tile  --prefix=/usr  lt_cv_sys_max_cmd_len=262144 --disable-cpp
//編譯的時候沒有使能c++的支持。
pcre-7.9 configuration summary:
   pcre-7.9 configuration summary:
    Install prefix .................. : /usr
    C preprocessor .................. : gcc -E
    C compiler ...................... : gcc
    C++ preprocessor ................ : g++ -E
    C++ compiler .................... : g++
    Linker .......................... : /usr/bin/ld
    C preprocessor flags ............ :
    C compiler flags ................ : -O2
    C++ compiler flags .............. : -O2
    Linker flags .................... :
    Extra libraries ................. :
    Build C++ library ............... : no
    Enable UTF-8 support ............ : no
    Unicode properties .............. : no
    Newline char/sequence ........... : lf
    \R matches only ANYCRLF ......... : no
    EBCDIC coding ................... : no
    Rebuild char tables ............. : no
    Use stack recursion ............. : yes
    POSIX mem threshold ............. : 10
    Internal link size .............. : 2
    Match limit ..................... : 10000000
    Match limit recursion ........... : MATCH_LIMIT
    Build shared libs ............... : yes
    Build static libs ............... : yes
    Link pcregrep with libz ......... : no
    Link pcregrep with libbz2 ....... : no
    Link pcretest with libreadline .. : no
* make
* make install

4) Compile the PCRE demo code and test PCRE lib on TILERA linux. PCRE 的源文件中提供了兩個demo程序,一個是比較簡單的pcredemo.c,很容易理解;另外一個是pcretest.c,這個比較全面、完整的介紹了pcre庫的使用。這兩個demo本身就是非常好的學(xué)習(xí)材料。
# gcc -o pcredemo pcredemo.c -lpcre
#  ./pcredemo 'cat|dog' 'the cat sat on the mat'
Match succeeded at offset 4
0: cat
No named substrings
# ./pcredemo -g 'cat|dog' 'the dog sat on the cat'
Match succeeded at offset 4
0: dog
No named substrings
Match succeeded again at offset 19
0: cat
No named substrings
//參考資料:
PCRE源碼文檔:pcre-7.9/doc/html

posted on 2009-09-07 21:46 肥仔 閱讀(4796) 評論(1)  編輯 收藏 引用 所屬分類: 庫 & 代碼段

評論

# re: 怎么使用PCRE庫?  回復(fù)  更多評論   

不錯呢,正好在研究pcre,謝了
2011-08-03 08:59 | 編程
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            伊人伊人伊人久久| 黄色成人在线网址| 一区二区三区四区在线| 亚洲精品免费电影| 欧美日韩午夜在线| 性欧美大战久久久久久久久| 亚洲综合国产精品| 黄色成人在线免费| 亚洲日本中文字幕区| 欧美日韩在线播放| 久久精品亚洲国产奇米99| 久久免费精品视频| 日韩午夜免费| 亚洲欧美日韩在线综合| 在线免费观看日韩欧美| 亚洲精品一区二区三区蜜桃久| 欧美日本一区二区视频在线观看| 美女国产一区| 亚洲特色特黄| 久久成人18免费网站| 亚洲美女精品久久| 亚洲综合不卡| 日韩午夜免费视频| 羞羞色国产精品| 日韩视频精品在线观看| 午夜在线不卡| 在线视频你懂得一区二区三区| 午夜精品影院| 在线综合欧美| 老鸭窝91久久精品色噜噜导演| 亚洲一区二区三区四区五区黄| 久久久www| 亚洲在线免费| 欧美国产日韩一区二区| 久久精品国产久精国产爱| 欧美激情无毛| 看片网站欧美日韩| 国产精品色婷婷久久58| 亚洲激情自拍| 亚洲观看高清完整版在线观看| 亚洲欧美日韩成人高清在线一区| 亚洲三级电影在线观看| 久久精品国产清高在天天线| 亚洲自拍电影| 欧美精品一区二区三区在线播放 | 蜜臀久久99精品久久久久久9 | 久久综合九色九九| 欧美专区18| 国产精品每日更新在线播放网址| 亚洲国产一二三| 亚洲国产精品久久| 久久久高清一区二区三区| 久久精品视频导航| 国产日韩一区在线| 亚洲欧美日韩人成在线播放| 亚洲素人一区二区| 久久精品国产清自在天天线| 国产精品视频1区| 中日韩午夜理伦电影免费| 99re6这里只有精品视频在线观看| 另类综合日韩欧美亚洲| 麻豆久久精品| 亚洲激情午夜| 欧美激情片在线观看| 亚洲大黄网站| 亚洲精品久久久久中文字幕欢迎你 | 久久久久久久尹人综合网亚洲| 欧美在线播放一区| 国产乱肥老妇国产一区二| 亚洲欧美日韩中文视频| 欧美呦呦网站| 狠狠色综合网| 久久综合网色—综合色88| 欧美肥婆在线| 99这里只有久久精品视频| 欧美区一区二| 亚洲欧美日韩国产另类专区| 久久精品女人| 亚洲国产99| 欧美日本亚洲| 亚洲综合成人在线| 老司机免费视频久久| 亚洲精品乱码| 国产精品拍天天在线| 久久精品国产一区二区三区| 欧美激情在线播放| 亚洲一区二区3| 韩国免费一区| 欧美精品免费视频| 亚洲欧洲av一区二区| 欧美+亚洲+精品+三区| 99精品免费视频| 国产欧美日韩一区二区三区| 老司机免费视频久久| 亚洲精品资源美女情侣酒店| 欧美影院午夜播放| 99国产精品久久久久久久| 国产精品捆绑调教| 免费观看久久久4p| 亚洲激情网址| 国产午夜亚洲精品羞羞网站| 欧美成人亚洲成人日韩成人| 亚洲一区二区在线播放| 欧美国产精品v| 欧美在线观看一二区| 亚洲美女在线观看| 黄色精品一区| 国产精品成人免费| 欧美成人中文字幕| 欧美一区二区高清| 日韩亚洲欧美高清| 欧美成人综合一区| 久久高清免费观看| 亚洲天天影视| a91a精品视频在线观看| 激情视频一区| 国产夜色精品一区二区av| 欧美激情一区在线| 久久性天堂网| 久久精品国产亚洲一区二区三区 | 久久夜色精品国产亚洲aⅴ| 亚洲视频二区| 亚洲乱码国产乱码精品精可以看| 国产一区二区三区久久悠悠色av | 国产裸体写真av一区二区 | 亚洲小说春色综合另类电影| 亚洲国内高清视频| 欧美高清视频在线观看| 久久午夜电影| 久久婷婷色综合| 久久久亚洲国产美女国产盗摄| 香蕉亚洲视频| 亚洲欧美成人精品| 亚洲欧美另类在线| 亚洲一区高清| 亚洲欧美日韩天堂一区二区| 亚洲色图在线视频| 亚洲图片在区色| 亚洲午夜伦理| 午夜在线电影亚洲一区| 亚洲欧美国产视频| 亚洲摸下面视频| 欧美亚洲一级片| 久久精品三级| 嫩模写真一区二区三区三州| 欧美sm视频| 最近看过的日韩成人| 国产一区二区日韩| 国产亚洲欧美日韩日本| 国产一区二区久久精品| 国内精品免费午夜毛片| 影音先锋另类| 亚洲人体影院| 亚洲在线观看免费视频| 亚欧成人在线| 另类综合日韩欧美亚洲| 欧美韩日一区| 99一区二区| 小嫩嫩精品导航| 免费观看成人鲁鲁鲁鲁鲁视频| 欧美国产在线观看| 国产精品美女久久久久久免费| 国产精品免费观看视频| 国产日韩欧美不卡在线| 亚洲电影视频在线| 亚洲一区二区三区在线| 欧美在线亚洲在线| 欧美激情亚洲国产| 亚洲色在线视频| 久久久天天操| 欧美日韩综合精品| 国产一区二区三区黄| 亚洲日本一区二区| 午夜在线播放视频欧美| 免费看黄裸体一级大秀欧美| 亚洲精品免费观看| 欧美一区二区三区免费看| 欧美 日韩 国产精品免费观看| 欧美日韩一区二区免费视频| 国内成人精品一区| 在线一区欧美| 乱中年女人伦av一区二区| 亚洲另类视频| 久久久夜精品| 国产精品中文字幕欧美| 亚洲精品久久久久久一区二区 | 亚洲精品久久久久中文字幕欢迎你 | 国产九九精品| 一本色道久久99精品综合| 久久免费视频这里只有精品| 一本色道久久综合精品竹菊 | 亚洲理论在线| 久久野战av| 国产一区二区三区在线观看网站| 一本色道久久综合狠狠躁篇怎么玩| 久久蜜桃香蕉精品一区二区三区| 在线一区亚洲| 欧美另类人妖| 亚洲精品欧美日韩专区| 久久午夜激情|