2016-08-04 13 views
-2

私はこのRegexステートメントを使用して実行しています。しかし何らかの理由で端末に印刷されません。Regexが印刷できません

string s (filename); 
smatch m; 
regex e ("(\\.[^.]+)$"); 
regex_search (s,m,e); 

cout << m.suffix().str() <<endl; 

どうしたのですか?チュートリアルに従ってください。何らかの理由で印刷されません。

+0

「ファイル名」には何が設定されていますか? [mcve]を含めてください。 –

+0

'cout << m.str(1)<< endl;' - https://ideone.com/pFajqPを使用してください。 'suffix'はあなたが文字列の終わりにマッチしたのでここでは空です。 –

+0

@wiktorstribizewは重複していません。現在、これはwhile .. forループ内にネストされていません。私はこの例に従っています[http://en.cppreference.com/w/cpp/regex/match_results/suffix] – HiWorld

答えて

0

suffix referenceを見る

正規表現と標的配列の端部の全体一致の端部との間の標的配列を表すstd::sub_matchオブジェクトへの参照を取得します。

あなたの場合は、文字列の最後に一致しているため空です。一致値を印刷する必要がある場合は、または - キャプチャグループにパターンを配置したので、m.str(1)を使用します。

IDEONE C++ demo

関連する問題