除非整行都相同,否则正则表达式不匹配

时间:2015-04-20 13:09:41

标签: c++ regex visual-studio-2010

我遇到了正则表达式的问题。例如,在以下代码中,if语句返回false:

string test("ABC123");
regex e("123");
if(regex_match (test.begin(), test.end(), e))
{
  //do something
}

我能将正则表达式返回true的唯一方法是将正则表达式设置为"ABC123"".+"。其他可能的正则表达式(例如"[0-9]""[A-Z]"也会返回false。

2 个答案:

答案 0 :(得分:5)

不,请参阅this explanation

  

整个目标序列必须与此正则表达式匹配   函数返回true(即没有任何附加字符   在比赛之前或之后)。对于一个在返回时返回true的函数   match只是序列的一部分,请参阅regex_search。

改为使用regex_search

这会返回true

string test("ABC123");
regex e("123");
if(regex_search (test.begin(), test.end(), e))
{
   return true;
}

答案 1 :(得分:1)

你应该使用

regex_search(test.begin(), test.end(), e))

代替

只有当被测试的整个字符串与正则表达式匹配时,

regex_match才会返回true。如果字符串中的子字符串与。

匹配,则regex_search将返回true

请查看此链接以获取更多信息:

http://www.johndcook.com/blog/cpp_regex/