c++ - 将正则表达式模式定义为无符号字符

标签 c++ regex

有什么方法可以创建包含无符号字符的正则表达式模式?我试过:

regex* r = new regex("\\xff");

这会导致异常,指出模式字符超出范围。我还尝试按照正则表达式包含文件中的代码定义我自己的 basic_regex 和我自己的 regex_traits,但这会导致本地包含文件出现奇怪的错误。

如有任何帮助,我们将不胜感激。

最佳答案

这是 ECMAScript 正则表达式中合法的 HexEscapeSequence(这是 C++ 默认使用的),它似乎适用于我的测试:

#include <iostream>
#include <regex>

int main()
{
    std::regex re("\\xff");
    std::string test = "abc\xff";

    std::smatch m;
    regex_search(test, m, re);

    std::cout << "Found " << m.size() << " match after '"
              << m.prefix() << "'\n";
}

clang++/libc++: Found 1 match after 'abc'

g++/boost.regex (replacing std:: with boost::): Found 1 match after 'abc'

你的实现是什么?

关于c++ - 将正则表达式模式定义为无符号字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19018034/

相关文章:

java - 旧正则表达式代码的必要解释

c++ - 读取 Unicode 文件 C++

一个单元格内多行的正则提取

regex - Ubuntu 16 sed 不能使用括号

c++ - 如何在目录中以特定格式获取行的特定部分?

regex - 防止前后查找匹配重叠

java - java正则表达式中的引号

c++ - 继承层次中的虚函数

c++ - 专门针对受约束的非类型参数模板化的类

c++ - shared_ptr、vector、emplace_back 和外部使用指针