2008にも追加パッケージとして供給される予定)。第2回は正規表現「regex」についてです。目次Page1はじめに正規表現についてPage2正規表現-照合:regex_matchPage3正規表現-検索:regex_search、regex_iteratorPage4正規表現-置換:regex_replaceまとめはじめにC++の新しい規格「C++0x」では、言語とライブラリの両面から便利な機能が追加されます。1)はC++0xのライブラリ部で、標準C++に新たに追加されるライブラリの多くはBoostの中から選ばれたものです。2008にも追加パッケージとして供給されるとの情報を得ています。TR1に収録されたクラス/関数の中からいくつかをピックアップし、その概要と使い方を予習しておきましょう。正規表現についてさまざまなアプリケーションの実装で必ずと言っていいほど必要となるのが文字列の処理です。簡単なところではファイル、ユーザー入力、あるいはネットワーク越しに手に入れた文字列を空白やカンマで区切るとか、特定の文字列の検索などがあります。<string.h>(C++では<cstring>)や標準C++ライブラリのstd::string/wstringには各種の文字列操作関数が用意されていますが、いずれも極めて基本的なものばかりです。文字列中から特定の文字列を検索することはできますが、文字列のパターン照合となると相当面倒なコードを組み上げなくてはなりません。"07/12/25"のように、数字二桁を'/'で繋いで年月日を表現した文字列をテキストファイル内から抽出するのにはC/C++の標準関数/クラスだけでは骨が折れます。PerlやRubyといったスクリプト言語は文字列の処理が得意です。これらスクリプト言語の多くが正規表現をサポートしていることが文字列処理を得意としている大きな理由の1つと言えるでしょう。正規表現は単なる固定文字列ではなくパターンの照合/検索を可能にします。TR1に組み入れられる正規表現ライブラリ「Regex」は文字列パターンの照合/検索/置換を行います。Expression)の構文を以下にまとめておきます。使われるものを選んだもので、完全なリストではありません。.:ワイルドカード任意の一文字。$:行頭/行末それぞれ文字列の先頭と末尾を表します。):部分表現(sub-expression)正規表現中に現れるパターンの部分(グループ)を表します。?:繰り返し*は直前の0回以上の繰り返し。...にマッチします。+は直前の1回以上の繰り返し。?は直前の0回もしくは1回の繰り返し。{}によって繰り返しの回数を指定できます。