字串和文本處理Boost.Regex
Regex對於解決相當數量的模式比對(pattern-matching)問題是至關重要的。它們經常被用於處理長字串、非精確地尋找子字串、根據某些格式tokenize字串,或者依照某個標準對字串進行修改。以前C++缺少對於Regex的支援,使用者不得不求助於其它對Regex有強有力支援的語言,比如Perl,awk和sed。Regex對於Regex提供高效有力的支援,它遵循與標準模板庫(STL)相同的設計理念,這使得它的用法相當直觀。Regex已經被即將到來的(標準)庫技術報告所採納。更多資訊請參閱“Library 5: Regex”。
Regex的作者是John Maddock博士。
Boost.Spirit
Spirit庫是一個函數式的(functional)、用以產生遞迴下降式解析器(recursive-decent parser)的架構。通過它,你可以建立命令列解析器,甚至一門語言的編譯預先處理庫[1]。它使用(接近於)擴充的巴科斯-諾爾範式(EBNF)文法,允許程式員直接通過C++代碼指定文法規則。解析器通常很難寫的優雅,尤其是針對某個特定問題的時候,它們很快變得難以維護和理解。Spirit避免了這些問題,而且給出了與手寫(hand-tuned)解析器相同(或幾乎相同)的運行效率。
Spirit的作者是Joel de Guzman,以及一個經驗豐富的程式員團隊。
Boost.String_algo
這是一組與字串相關的演算法。這些有用的演算法涉及大小寫轉換、去除字串頭尾的多餘字元、切分字串、尋找/替換等等。這一組演算法是C++標準庫字串演算法的擴充。
String_algo的作者是Pavol Droba。
Boost.Tokenizer
這個庫提供了把字元序列拆分成token的方法。通常的解析工作包括從由分割符所分割的文字資料流中尋找指定資料。如果能夠把這樣一個序列當作一系列裝在容器裡的元素來對待,就輕鬆多了,這些元素是根據使用者定義的標準來進行分割的。這樣解析(parsing)就獨立於對這些元素所實施的操作,確切地說,Tokenizer庫提供的就是這種抽象機制。使用者決定字元序列是如何被分割的,當使用者要求處理新的元素的時候,由庫來尋找相應的tokens。
Tokenizer庫的作者是John Bandela。
[1] Wave庫說明了這一點,它通過使用Spirit實現了一個高度相容的C++編譯預先處理庫。