2011-07-12 3 views
2

私はboost::regexを使用して、テキストと正規表現をマッチさせます(よりよく言うとboost::regex_search)。boost :: regexのどの部分が一致/検索に失敗したかを理解する方法

これは一致せず、私の正規表現は本当に巨大です。

ライブラリに、正規表現のどの部分が一致しなかったかを示す関数があるかどうか知っていますか?

私はグラブはできるだけ早くキキのgcc LINUX/

 std::string text; // whatever 
    boost::regex rgx("(\\w+) (\\d+) (\\s+)"); 
    boost::smatch m; 
    if(!boost::regex_search(text, m, rgx)){ 
     // how to know where (\\w+) or (\\d+) or (\\s+) failed? 
    } 
+0

これはJava用に設計されていますが、私はまだhttp://www.fileformat.info/tool/regex.htmがあなたのニーズを満たすと考えています。 –

答えて

1

私の知る限り、ライブラリのツールはありませんが、私はBoostバージョン1.28.0を使用していました。

(\ w +)、(\ d +)、(\ s +)をお互いに独立して実行しようとしましたか?それらのうちの少なくとも1つは一致しないはずです。

+0

ドキュメントを見ると、あなたが正しいと思われます。一致するプロセスが間違っていたかどうかを文字列のAT which pointと言うことがあなたのことを知っていますか? –

+0

はい、上で説明したように、あなたの正規表現を分割することでこれを判断することができます。 – Shlublu

+1

この記事に戻ると私は、エラーがどこであるかを確認する良い方法は、正規表現を1行ずつコメントして試してみることです。面倒なように見えますが、実際にはShlubluが提案する方法があります。テスト環境でこのタスクのために小さなアプリケーションを作成しました。 –

0

を使用しています。これは、正規表現を使ってテストして遊ぶための貴重なツールです。
debianベースのディストリビューションを使用している場合は、ベースリポジトリに存在する必要があります。

関連する問題