【问题标题】:Define regexp pattern as unsigned char将正则表达式模式定义为无符号字符
【发布时间】:2013-10-01 19:39:41
【问题描述】:

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

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

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

任何帮助将不胜感激。

【问题讨论】:

    标签: c++ regex


    【解决方案1】:

    这是 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++:在“abc”之后找到 1 个匹配项

    g++/boost.regex(用 boost:: 替换 std::):在 'abc' 之后找到 1 个匹配项

    你的实现是什么?

    【讨论】:

    • 我正在使用 Visual Studio 2010。显然,它正在检查
    猜你喜欢
    • 2012-03-19
    • 1970-01-01
    • 2015-11-28
    • 1970-01-01
    • 2019-11-21
    • 1970-01-01
    • 2022-09-30
    • 2020-02-05
    • 2020-07-27
    相关资源
    最近更新 更多