重複:There is a function to use pattern matching (using regular expressions) in C++?正規表現をC++で使うことは可能ですか?
どこで使うのかわかりません...正規表現を引数として使うパーサ型関数はありますか?私はちょうど私のエディタがC/C++構文の "正規表現"の後に/私が変わったと思った行を強調表示することを知りました...
重複:There is a function to use pattern matching (using regular expressions) in C++?正規表現をC++で使うことは可能ですか?
どこで使うのかわかりません...正規表現を引数として使うパーサ型関数はありますか?私はちょうど私のエディタがC/C++構文の "正規表現"の後に/私が変わったと思った行を強調表示することを知りました...
バニラC++言語では正規表現はサポートされていません。しかし、Regexをサポートするいくつかのライブラリがあります。ブーストは人気があります。
BoostのRegex実装を確認してください。
PCRE(それはまた、C++で動作)Cのためのデファクトスタンダードの正規表現ライブラリです。
(エディタが何をしているか私にはわからないPCREや提案の他のいずれかのようにライブラリを使用すると、Cの構文は変更されません - 。。あなたの正規表現の定義は、常に文字列で開催されます)
サードパーティのライブラリを使わずにC++で正規表現を実行できるとは思いません。 QtとGtk +/Gtkmmの両方にこれらが付属しています。 Visual C++ 2008にもこの機能があります。
Boost.Xpressiveを使用すると、式テンプレートと静的(Boost.Regexのように)文字列またはとしてregexsを書くことができます。文法の場合はBoost.Spiritに似ています。
は、例えば、これらの二つは等価である:
sregex rex1 = sregex::compile("(\\w+) (\\w+)!"); //normal string based way
sregex rex2 = (s1= +_w) >> ' ' >> (s2= +_w) >> '!'; //expression template way
正規表現TR1(see Chapter 7 in Documentation)で定義されたC++標準ライブラリの拡張の一部です。 dinkumware libraryつまり、regEx拡張を実装しました。私は他の実装について知りません。
拡張子はシンプルで使いやすいです。
完全性のために、Qtには正規表現マッチングを行うQRegExpがあります。
グランドQtアプリケーションのリモート機能用に小さな正規表現が必要な場合は、通常これが役に立ちます。もっと深刻なことには、PCREは確かに行く方法です。
いいえ、C++には、一部の言語で使用されている/.../構文を使用する正規表現はありません。あなたのエディタは間違っています。
C + +の正規表現ライブラリは存在しますが(C++ 0xに含まれる予定です)、文字列を処理しますが、 "、スラッシュではないので、あなたのエディタの動作
あなたがVisual Studioにいる場合は、グレタ(greta regexを検索)を使うことができますが、それはブーストよりも少し遅いと思います。
ビジュアルスタジオを使用していて、移植性が大きな問題ではない場合は、CAtlRegExpというかわいいATL機能を使用して、結果をかなり早く得ることができます。完全で効率的な正規表現の解析とマッチング(online sample)が含まれています。しかし、その性能をBOOSTと比較していない。
TR1がコンパイラによってサポートされるまで。 –