regex_match有什么问题?非常简单的表达

时间:2014-09-01 15:34:10

标签: c++ regex std

我正在使用VS2010和编码c ++控制台应用程序并遇到问题

#include <regex>
using namespace std;

//...

if (!regex_match("abab",regex("(ab?)*")))
{
  //the problem is - why we are here? why it doesn't match?
}

在这里查看http://regexpal.com/ - 匹配

1 个答案:

答案 0 :(得分:1)

非常简单:如果整个序列匹配,则regex_match仅返回true。如果要查看字符串是否包含正则表达式,可能需要使用regex_search。

<德尔>&#34; AB&#34?;匹配&#34; aba&#34;,转发器(&#34;()*&#34;)进行一次匹配。剩下的是&#34; b&#34;,所以它不是一个完整的匹配。

对不起,我误读了正则表达式。它应该是完全匹配。很奇怪:

regex_match("aab", regex("(ab?)*")) == true

似乎是所使用的stl中的错误(使用QT Creator 2010.05测试,makepec = VS2010)。在代码中用regex_search替换regex_match是正确的,但是match_results是空的 - 表示某些内容仍然出错。

VS2012所有测试都匹配正确。