2016-08-04 96 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