Boost.Regex庫在linux上的編譯安裝,使用

1. 什麼是Boost.Regex? 

Boost是C++中僅次於STL的一套庫,它的功能比STL更加全面。這裏是Boost的主頁,想了解Boost的朋友可以看一下:http://www.boost.org/doc/libs/1_37_0/libs/regex/doc/html/index.html。需要說明的一點是,Boost目前還不是C++標準庫的一部分,因此如果要使用Boost中的庫,需要自己安裝一下。

Boost.Regex是Boost中的正則表達式庫,它是由John Maddock提供的,它的全部文檔在這裏:http://www.boost.org/doc/libs/1_37_0/libs/regex/doc/html/index.html

2. Boost.Regex的編譯
最新的Boost庫是1.42.0,在使用Boost.Regex之前,需要先下載Boost庫,可以通過下面兩種方式下載:
(1)Http下載,下載地址是http://sourceforge.net/projects/boost/files/boost/1.42.0/
(2)用svn客戶端來下載,地址是:http://svn.boost.org/svn/boost/trunk/
我個人比較推薦使用svn客戶端來下載,這樣的話,如果要更新直接svn update一下,就不用再去重新下載了。

下載好了Boost庫,下面開始編譯, 本文中我以Linux平臺爲例進行說明,其它平臺的編譯方法參見上面提到的文檔。下面是具體的步驟:(假設下載完後的,代碼解壓在了BOOST_ROOT目錄)
(1)進入到BOOST_ROOT/libs/regex/build目錄
(2)如果要使用靜態庫,請執行make -fgcc.mak
(3)如果要使用靜態庫,請執行make -fgcc-shared.mak
執行完上面三步後的,在BOOST_ROOT/libs/regex/build/下會生成一個gcc目錄 ,進入該目錄 ,可以看到生成了下面四個文件:
(1)libboost_regex-gcc-1_42.a , 這是release版的靜態庫
(2)libboost_regex-gcc-1_42.so, 這是release版的動態庫(共享庫)
(3)libboost_regex-gcc-d-1_42.a, 這是debug版的靜態庫
(4)libboost_regex-gcc-d-1_42.so, 這裏debug版的動態庫(共享庫)
編譯好之後的,就可以開始使用了。這裏提供一個我編譯好的版本,如果讀者朋友不想自己編譯,可以直接從我這裏下載使用,下載完記得校驗一下MD5: b6e0d805ea22ba08cb230ca98a517953。
點此下載:libboost_regex.tar.gz

3. Boost Regex Libray類和接口介紹
(1)basic_regex
basic_regex是一個模板類,它封裝了正則表達式的解析和編譯,它是Boost.Regex中用來表示正則表達式的對象類型。Boost.Regex定義了兩種標準類型,一種是基於單字節字符的regex,另一種是基於寬字符的wregex
關於basic_regex提供的接口,和STL中basic_string所提供的十分類似,具體可以參考:
http://www.boost.org/doc/libs/1_37_0/libs/regex/doc/html/boost_regex/ref/basic_regex.html

(2)match_results
match_results是用來表示所有匹配指定正則表達式的字符串的集合的對象類型。Boost.Regex提供了四種標準類型的定義:C單字節字符類型的cmatch, C寬字符類型的wcmatch, C++單字節字符類型smatch, C++寬字符類型wsmatch。match_results所提供的接口參見:
http://www.boost.org/doc/libs/1_37_0/libs/regex/doc/html/boost_regex/ref/match_results.html

(3)sub_match
sub_match是用來表示匹配指定正則表達式的字符串的對象類型。match_results就是由sub_match組成的集合類型。
關於sub_match類型,有下面三點需要注意的:
a. sub_match類型的對象只能通過對match_results類型的對象取下標獲取
b. sub_match類型的對象可以和std:basic_string或const char*的字符串進行比較
c. sub_match類型的對象可以和std::basic_string或const char*的字符串相加,生成新的std::basic_string類型的字符串
sub_match所提供的接口請參考:
http://www.boost.org/doc/libs/1_37_0/libs/regex/doc/html/boost_regex/ref/sub_match.html

(4)reg_match, reg_search和reg_replace
reg_match, reg_search和reg_replace都是Boost.Regex所提供的具體進行正則匹配的算法接口。
reg_match用來判定整個字符串是否匹配指定的的正則表達式, 具體定義參見:
http://www.boost.org/doc/libs/1_37_0/libs/regex/doc/html/boost_regex/ref/regex_match.html
reg_search用來判定字符串的某一部分是否匹配指定的正則表達式, 具體定義參見:
http://www.boost.org/doc/libs/1_37_0/libs/regex/doc/html/boost_regex/ref/regex_search.html
reg_replace用來把字符串中匹配指定正則表達式的部分替換爲指定內容輸出,對於不匹配的部分原樣輸出, 具體定義參見:
http://www.boost.org/doc/libs/1_37_0/libs/regex/doc/html/boost_regex/ref/regex_replace.html

4.Boost Regex Libray使用注意事項

(1)在使用之前你需要把Boost的安裝目錄加入到系統的Path中(當然也可以在編譯時直接指定)
(2)需要包含的頭文件 boost/regex.hpp
(3)需要依賴的庫:上步中編譯好的四個庫,取其中任意一個即可,具體如何使用動態/靜態庫,請自己查閱相關資料

(4)程序編譯成功後,在執行之前,還要在shell中運行:export LD_LIBRARY_PATH="path", path爲你的libboost_regex-gcc-1_44.so所在的目錄,然後再運行你的程序。

我的是:export LD_LIBRARY_PATH="/home/zhdr/test/boost/libs/regex/build/gcc"


轉載:http://blog.csdn.net/shudaqi2010/article/details/32728457

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章