2016-08-04 95 views
-2

我正在使用此正則表達式運行。但由於某種原因,它不能在終端上打印。正則表達式無法打印

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

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

我做錯了什麼?按照教程,但不打印出於某種原因。

+0

什麼是'filename'設置爲?請包括[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()或者 - 因爲您將模式放入捕獲組中 - m.str(1)

查看IDEONE C++ demo