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

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>
            免费看av成人| 亚洲大片精品永久免费| 欧美午夜精品| 欧美日韩成人在线播放| 欧美高清hd18日本| 小处雏高清一区二区三区| 一区二区高清在线| 亚洲欧美日本在线| 久久精品国产亚洲一区二区三区| 午夜精品久久久久久久99樱桃| 亚洲你懂的在线视频| 亚洲欧美在线高清| 久久视频这里只有精品| 欧美gay视频| 一本不卡影院| 麻豆精品精品国产自在97香蕉| 欧美高清成人| 国产日韩精品入口| 亚洲精品麻豆| 久久久水蜜桃| 一本大道久久精品懂色aⅴ| 欧美一区精品| 国产精品高潮呻吟视频| 在线播放豆国产99亚洲| 欧美一级理论性理论a| 亚洲第一偷拍| 麻豆成人综合网| 狠狠色丁香婷婷综合久久片| 午夜精品福利一区二区蜜股av| 91久久精品一区二区别| 久久女同互慰一区二区三区| 国产精品久久福利| 午夜久久久久| 久久成人18免费观看| 国产曰批免费观看久久久| 久久久久久网| 久久综合免费视频影院| 在线观看日韩国产| 欧美国产日本在线| 欧美—级高清免费播放| 久久影院午夜论| 亚洲日本电影| avtt综合网| 国产精品视频一区二区高潮| 久久精品国亚洲| 麻豆精品在线播放| 一区二区三区国产精品| 亚洲午夜av在线| 亚洲二区三区四区| 亚洲日本va午夜在线影院| 欧美午夜宅男影院在线观看| 久久精品二区三区| 欧美精品123区| 欧美午夜剧场| 亚洲理论在线观看| 久久久91精品国产| 久久婷婷国产麻豆91天堂| 国产欧美欧洲在线观看| 欧美亚洲视频| 亚洲国产色一区| 一区二区高清视频| 黄色另类av| 先锋影院在线亚洲| 亚洲精品在线三区| 久久高清一区| 欧美一区二区视频在线观看| 欧美a级片一区| 免费不卡在线视频| 国产精品区免费视频| 亚洲国产一成人久久精品| 欧美午夜精品伦理| 亚洲精品孕妇| 久久人人九九| 暖暖成人免费视频| 亚洲欧洲精品天堂一级| 亚洲婷婷综合久久一本伊一区| 国产精品久久久久毛片大屁完整版| 性欧美video另类hd性玩具| 欧美视频在线一区| 亚洲天堂久久| 麻豆成人在线观看| 一本久久综合| 国产自产在线视频一区| 免费成人性网站| 99精品黄色片免费大全| 久久高清一区| 亚洲精品一区二区三区av| 国产精品v欧美精品∨日韩| 欧美与黑人午夜性猛交久久久| 亚洲国产精品久久久久秋霞影院 | 麻豆免费精品视频| 9久草视频在线视频精品| 这里只有视频精品| 亚洲午夜羞羞片| 免费看亚洲片| 鲁大师影院一区二区三区| 久久动漫亚洲| 久久九九热re6这里有精品| 亚洲毛片av| 亚洲电影激情视频网站| 国产综合色产| 国产综合色产在线精品| 国产欧美丝祙| 国产一区二区三区电影在线观看| 国产精品国产三级国产| 欧美午夜久久久| 欧美午夜精品久久久久免费视 | 亚洲大片在线观看| 久久综合中文色婷婷| 香蕉久久国产| 久久久噜久噜久久综合| 免费欧美网站| 欧美日韩国产精品成人| 欧美日韩在线播放一区二区| 欧美mv日韩mv国产网站app| 久热精品在线| 欧美激情亚洲国产| 欧美日韩视频一区二区| 国产精品人成在线观看免费| 国产日韩欧美不卡| 亚洲国产精品成人va在线观看| 亚洲日本免费| 欧美一区久久| 欧美激情按摩在线| 亚洲视频免费在线| 久久精品官网| 欧美日韩一区二区国产| 国产一区二区三区成人欧美日韩在线观看| 狠狠综合久久| 欧美一级片一区| 日韩小视频在线观看专区| 久久综合影视| 黄色影院成人| 欧美激情一区二区三区全黄| 裸体素人女欧美日韩| 一区二区三区在线视频观看| 美女免费视频一区| 麻豆成人在线| 亚洲一本视频| 亚洲视频欧美视频| 中文国产一区| 欧美国产日韩一区二区在线观看| 国产精品video| 亚洲性视频网站| 亚洲毛片在线看| 欧美日韩情趣电影| 正在播放亚洲一区| 亚洲国产精品一区在线观看不卡| 亚洲线精品一区二区三区八戒| 久久精品五月婷婷| 亚洲女人小视频在线观看| 国产欧美日韩视频一区二区| 午夜精品久久久久99热蜜桃导演| 99国产精品一区| 国产精自产拍久久久久久| 欧美专区在线播放| 久久精品视频va| 在线日韩欧美视频| 亚洲国产综合在线| 国产精品麻豆va在线播放| 欧美在线视频不卡| 久久视频在线看| 日韩午夜av| 久久激五月天综合精品| 日韩亚洲欧美成人一区| 亚洲色图综合久久| 一区二区三区在线视频免费观看| 最新国产拍偷乱拍精品| 国产精品视频一二| 亚洲国产成人精品女人久久久| 欧美色区777第一页| 久久一区二区视频| 国产精品久久久一本精品| 亚洲电影在线播放| 国产亚洲精品美女| 中文精品视频一区二区在线观看| 国产一区二区无遮挡| 亚洲最新色图| 亚洲精品系列| 久久久青草婷婷精品综合日韩| 欧美综合77777色婷婷| 欧美三级中文字幕在线观看| 亚洲国产精品电影在线观看| 亚洲国产精品一区在线观看不卡| 欧美在线一级视频| 久久久www成人免费无遮挡大片| 欧美色区777第一页| 日韩午夜在线观看视频| 亚洲免费av电影| 欧美精品色综合| 亚洲美女免费精品视频在线观看| 亚洲国产精品成人一区二区| 美女视频黄 久久| 亚洲经典一区| 99国产精品久久久久久久久久| 男女视频一区二区| 亚洲日本激情| 欧美视频在线观看免费| 亚洲永久精品大片| 午夜视频一区在线观看|