c++ STD正则表达式问号问题
c++ std regex question mark issue
我在使用std regex时有麻烦。我不能用问号量词。对regex_match的调用将始终返回0。
我也尝试了{0,1},它的行为也不像我预期的那样:它的行为像一个+量词。
下面是我的代码:#include <iostream>
#include <regex>
using namespace std;
int main(int argc, char **argv){
regex e1("ab?c");
cout << regex_match("ac", e1) << endl; // expected : 1, output 0
cout << regex_match("abc", e1) << endl; // expected : 1, output 0
cout << regex_match("abbc", e1) << endl; // expected : 0, output 0
regex e2("ab{0,1}c");
cout << regex_match("ac", e2) << endl; // expected : 1, output 0
cout << regex_match("abc", e2) << endl; // expected : 1, output 1
cout << regex_match("abbc", e2) << endl; // expected : 0, output 1
return 0;
}
我使用以下命令进行编译:
g++ -std=c++11 main.cpp -o regex_test
我做错了什么吗?或者为什么它不起作用?
您的正则表达式代码是好的。你正在使用的实现不是。它提供了一个头文件,声明了一堆库实现得不好的东西。如果一个商业软件包做到了这一点,它将受到严厉的批评,这是正确的。一分钱一分货
str::regex
主要是在gcc中实现的而不是(在撰写本文时)。见第28节:http://gcc.gnu.org/onlinedocs/libstdc + +/手册/status.html # status.iso.2011
正则表达式的POSIX标准定义了两种类型,基本和扩展。的吗?算子是一个扩展特性。显然你用了
std::regex re2(".*(a|xayy)", std::regex::extended)
相关文章:
- 使用正则表达式regex_search在字符串中查找字符串
- 在 C++ 中使用正则表达式错误时出现问题 括号表达式中的范围无效
- C++正则表达式无限循环
- FindPackageHandleStandardArgs.cmake:137 的 CMake 错误(消息):找不到 Boost (缺少:正则表达式)(找到合适的版本"1.72.0",
- 定义有趣的宏和正则表达式在Z3 C++绑定
- C++中的正则表达式存在问题
- CPP 中的正则表达式问题
- 这种使用增强正则表达式库有什么问题
- regex_error。我的正则表达式有什么问题
- #include < regex.h> 用于创建正确正则表达式的问题
- gcc 4.8或更早版本对正则表达式有问题吗
- C++中正则表达式的问题
- C++ MFC 正则表达式问题
- 正则表达式 POSIX 字符类C++问题
- 提升::正则表达式性能问题
- VS10 中文件名的正则表达式格式有什么问题<regex>?
- 使用boost::regex的正则表达式问题
- c++ STD正则表达式问号问题
- 使用增强正则表达式库编译程序时遇到问题
- 我的正则表达式代码有什么问题?