c++ - 使用 C++ 的正则表达式

标签 c++ regex c++11

我想创建一个正则表达式,它将只包含输入字符串 [G|y|M|d|D|F|E|h|H|m|s|S|w|W|a| z|Z] 所以我从下面想出了一些代码:

std::regex Reg = regex("[G|y|M|d|D|F|E|h|H|m|s|S|w|W|a|z|Z]");

我的问题是我的正则表达式仍然不正确,因为我的输入字符串可以包含其他字符以及上述组中的字符,例如:

std::string myInputString = Gx //correct

Gx 一定是错误的

最佳答案

我不是 C++ 的正则表达式库的用户,但我知道它支持 ECMAScript 语法。所以我认为你不需要管道字符。 “集合中的任何字符”[] 语法不使用管道。其次,如果你想匹配整个输入字符串(而不是它的任何部分),你需要使用 ^ 和 $ anchor

尝试:

std::regex( "^[GyMdDFEhHmsSwWazZ]+$" );

关于c++ - 使用 C++ 的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58722965/

相关文章:

jQuery:找到所有图像链接并将它们转换为一些默认拇指?

mysql - Mysql/phpmyadmin 中的正则表达式

C# Regex Lazy Quantifier 不匹配预期值

map 和 multimap 之间的 C++ 模板特化

c++ - 使用 std::find 查找从二进制文件读取的字符并转换为 std::vector<string> 中的 std::string 会产生这种不可预测的行为吗?

c++ - C++中的引用调用

c++ - std::endl 是否适用于 cout 和 wcout?

c++ - 有效输入迭代器的默认构造

c++ - 如何在 Visual Studio 中设置 MPI 中的进程数?

c++ - 如何设置动态分配数组的内容?