c++ - boost 正则表达式不匹配?

标签 c++ regex boost

我正在尝试按照此处的示例进行操作:

http://www.boost.org/doc/libs/1_31_0/libs/regex/doc/syntax.html

我想匹配这种形式的行:

[ foo77 ]

这应该很简单,我尝试了这样的代码片段:

boost::regex rx("^\[ (.+) \]");

boost::cmatch what;
if (boost::regex_match(line.c_str(), what, rx)) std::cout << line << std::endl;

但我不匹配那些行。我尝试了以下变体表达式:

"^\[[:space:]+(.+)[:space:]+\]$" //matches nothing
"^\[[:space:]+(.+)[:space:]+\]$" //matches other lines but not the ones I want.

我做错了什么?

最佳答案

boost::regex rx("^\[ (.+)\]"); 更改为 boost::regex rx("^\\[ (.+)\\]");,它会正常工作,编译器应该警告无法识别的字符转义序列。

关于c++ - boost 正则表达式不匹配?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21756496/

相关文章:

c++ - MFC 组合框下拉/下拉列表 : displaying only one item

c++ - 链接器脚本 - 在内存区域的末尾放置一个节

javascript - 替换或删除查询字符串 javascript

具有 3rd 方依赖性的 C++ 开发流程

c++ - 如何将 boost::multi_array 放入构造函数的初始化列表中?

c++ - boost::bind 返回一个函数对象,它是需要指针的函数的参数

c++ - 使用 Stringstream 将字符串转换为 Int

javascript - 正则表达式/Javascript 验证 : Don't allow comma as a valid character

java - 将区域设置属性名称转换为普通名称的最佳方法

c++ - LLVM 有后端优化器吗?