2009-05-02 2 views

答えて

18

バニラC++言語では正規表現はサポートされていません。しかし、Regexをサポートするいくつかのライブラリがあります。ブーストは人気があります。

BoostのRegex実装を確認してください。

+1

TR1がコンパイラによってサポートされるまで。 –

8

PCRE(それはまた、C++で動作)Cのためのデファクトスタンダードの正規表現ライブラリです。

(エディタが何をしているか私にはわからないPCREや提案の他のいずれかのようにライブラリを使用すると、Cの構文は変更されません - 。。あなたの正規表現の定義は、常に文字列で開催されます)

0

サードパーティのライブラリを使わずにC++で正規表現を実行できるとは思いません。 QtとGtk +/Gtkmmの両方にこれらが付属しています。 Visual C++ 2008にもこの機能があります。

1

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 
2

正規表現TR1(see Chapter 7 in Documentation)で定義されたC++標準ライブラリの拡張の一部です。 dinkumware libraryつまり、regEx拡張を実装しました。私は他の実装について知りません。

拡張子はシンプルで使いやすいです。

1

完全性のために、Qtには正規表現マッチングを行うQRegExpがあります。
グランドQtアプリケーションのリモート機能用に小さな正規表現が必要な場合は、通常これが役に立ちます。もっと深刻なことには、PCREは確かに行く方法です。

1

いいえ、C++には、一部の言語で使用されている/.../構文を使用する正規表現はありません。あなたのエディタは間違っています。

C + +の正規表現ライブラリは存在しますが(C++ 0xに含まれる予定です)、文字列を処理しますが、 "、スラッシュではないので、あなたのエディタの動作

0

あなたがVisual Studioにいる場合は、グレタ(greta regexを検索)を使うことができますが、それはブーストよりも少し遅いと思います。

1

ビジュアルスタジオを使用していて、移植性が大きな問題ではない場合は、CAtlRegExpというかわいいATL機能を使用して、結果をかなり早く得ることができます。完全で効率的な正規表現の解析とマッチング(online sample)が含まれています。しかし、その性能をBOOSTと比較していない。

関連する問題