2011-08-02 25 views
7
QRegExp rx("\\btest\\b"); 
rx.indexIn("this is a test string"); 
QString captured = rx.cap(1); 
std::string capturedstr = captured.toUtf8().constData(); 
std::cout << capturedstr; 

私は上記のテストを出力し、文字列内のtestという単語にマッチさせたかったのですが、そのようには見えませんでした。誰かここに光を当てることはできますか? QTを使用する。正規表現C++ Qt

+0

ありrx.cap(0)rx.cap(1)を交換してくださいRegExpサンプルプログラム($ YOUR_QT_DIR \ examples \ tools \ regexp \ releaseにあります)は、Qtの正規表現を使って作業することは非常に役に立ちます。正規表現を入力して、再コンパイルせずに結果をテストすることができます。ドキュメント[here](http://doc.qt.nokia.com/latest/tools-regexp.html) – docsteer

+0

@docsteerありがとう、この例は、正規表現を設計する際に本当に役に立ちます。 Qt5.2.1では、$ QT_DIR/examples/widgets/tools/regexp/release – toussa

答えて

9

あなたはので、あなたの正規表現で任意のキャプチャ括弧を持っていないそこにはキャプチャグループ1の代わりにこれを試してみてくださいされていない:

QRegExp rx("\\b(test)\\b"); 
+3

...にあるか、 'rx.cap(0)'を使ってマッチ全体にアクセスします。 –

1

をマッチ全体がインデックス0