【发布时间】:2013-10-01 19:39:41
【问题描述】:
有什么方法可以创建一个包含无符号字符的正则表达式模式?我试过了:
regex* r = new regex("\\xff");
这会导致异常,指出模式字符超出范围。我还尝试在正则表达式包含文件中的代码之后定义我自己的 basic_regex 和我自己的 regex_traits,但这会导致本地包含中出现奇怪的错误。
任何帮助将不胜感激。
【问题讨论】:
有什么方法可以创建一个包含无符号字符的正则表达式模式?我试过了:
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++:在“abc”之后找到 1 个匹配项
g++/boost.regex(用 boost:: 替换 std::):在 'abc' 之后找到 1 个匹配项
你的实现是什么?
【讨论】: