C++11正则表达式不匹配任何内容
C++11 regex to match nothing
我遇到一个任务,该任务重用一个不匹配的正则表达式。
C++引用愉快地声明它已经有了这样的东西:http://en.cppreference.com/w/cpp/regex/basic_regex/basic_regex
1) 默认构造函数。构造一个空的正则表达式,该表达式将不匹配。
但事实上(clang 3.3)并非如此:
#include <string>
#include <regex>
int main(int argc, const char *argv[]) {
std::regex re1;
std::regex re2("");
std::smatch rt1, rt2;
bool r1 = std::regex_match(std::string(""), rt1, re1);
bool r2 = std::regex_match(std::string(""), rt2, re2);
std::cerr << "r1:" << r1 << ", r2:" << r2 << std::endl;
}
此程序打印:r1:1, r2:1
这意味着两个正则表达式都匹配空字符串。
知道这里出了什么问题以及如何创建"不匹配"regex吗?
std::basic_regex
的默认构造函数构造一个"不匹配任何字符序列"的正则表达式。[re.regex.construct]/1.如果您的实现匹配一个空字符序列,那就错了。
相关文章:
- C4018:类内有符号、无符号不匹配
- 错误:'EM::EM(...)' 的原型与类 'EM' 中的任何原型都不匹配
- valgrind:当试图调试在Docker容器内运行的C++程序时,堆块lo/hi大小不匹配
- 内联在对always_inline的调用中失败,Qt中的目标特定选项不匹配
- 显式专用化 - 模板 ID 与任何模板声明都不匹配
- 模板类专用化:模板 ID 与任何模板声明都不匹配
- 模板 ID 与任何模板声明都不匹配
- 我的 Boost 正则表达式与任何内容都不匹配
- template-id 与任何模板声明 GNU gcc 编译器都不匹配
- 错误:'void TNode::inititTree(TNode*)' 的原型与类 'TNode' 中的任何原型都不匹配
- Qt:"closeEvent"的外线定义与"MainWindow"中的任何声明都不匹配
- 错误:原型与类中的任何原型都不匹配
- "...."的原型与类中的任何"..."都不匹配
- qregexp不匹配任何东西
- 内联 ASM:'out'的操作数类型不匹配
- 你能帮助解决这个错误吗?(g++原型与类中的任何原型都不匹配)
- 函数的原型与类C++中的任何原型都不匹配
- 为什么这些函数模板中的任何一个都与实例化不匹配?
- 'function'的外联定义与'Class'中的任何声明都不匹配
- C++,构造函数:'class'的外联定义与'class'中的任何声明都不匹配