\ s不能在C ++正则表达式中工作

时间:2016-09-24 17:40:55

标签: c++ regex

我昨天开始学习正则表达式,在学习的过程中,我看到\ s用于空格字符。但是,出于某种原因,每当我输入空格时,都不会在C ++中检测到它。

代码:

#include <iostream>
#include <regex>
using namespace std;

int main() {
  string str;
  cin>>str;

  regex e("a+\\s+b+");
  bool found = regex_match(str,e);
  if (found)
  {
    cout<<"Matched";
  }
  else
  {
    cout<<"No Match";
  }
  return 0;
}

输入:a b
输出:不匹配

https://ideone.com/ULJrkQ

如果我在上面的代码中用\\s替换\\w并输入如下内容:

输入:azb
输出:匹配

http://ideone.com/4yBS4Z

我不明白为什么只是拒绝工作。我在网上浏览了这个问题的答案,但是无法找到导致这个问题的原因。

我使用CodeBlocks 16 IDE和GNU / GCC编译器,在Windows上启用了C ++ 11支持,在IDEONE上启用了C ++ 14(GCC 5.1)。

非常感谢任何帮助。感谢。

1 个答案:

答案 0 :(得分:1)

请确保您阅读整行,一个解决方案是使用List<String>而不是std::getline(cin, str)。请参阅工作here one Ideone的示例:

cin >> str