gpt4 book ai didi

c++ - 常用符号 '\p{S}' 不是 'matched' 使用 boost wregex

转载 作者:搜寻专家 更新时间:2023-10-31 02:15:24 26 4
gpt4 key购买 nike

我正在使用下面的代码尝试使用正则表达式匹配符号,(例如,我正在尝试匹配圆星符号 http://graphemica.com/%E2%9C%AA)

#include <boost/regex.hpp>

//...
std::wstring text = L"a✪c";
auto re = L"(\\p{S}|\\p{L})+?";
boost::wregex r(re);
boost::regex_token_iterator<std::wstring::const_iterator>
i(boost::make_regex_token_iterator(text, r, 1)), j;
while (i != j)
{
std::wstring x = *i;
++i;
}
//...

text 的字节值为 {97, 10026, 99},(或 `{0x61,0x272A, 0x63}')。所以它是一个有效的符号。

代码匹配 2 个字母,'a' 0x61'c'``0x63,但不匹配符号 (0x272A)。我已经用其他几个符号尝试过它,但没有一个起作用,(例如 ©)。

我在这里错过了什么?

最佳答案

Boost.Regex 文档明确指出 there's no support for Unicode-specific character classes使用 boost::wregex 时。

如果你想要这个功能,你需要build Boost.Regex with ICU support启用然后使用 boost::u32regex 类型而不是 boost::wregex

关于c++ - 常用符号 '\p{S}' 不是 'matched' 使用 boost wregex,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38525120/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com