我希望使用正则表达式匹配“février”或任何其他月份。
正则表达式:
^(维耶| FEVRIER | MARS | AVRIL | MAI |朱安| JUILLET | AOUT | SEPTEMBRE | OCTOBRE | NOVEMBRE | DECEMBRE |一月|二月|三月|四月|五月|六月| JUN |七月|八月|九月|十月| 11月| 12月| [JJ] anvier | [FF]évrier| [mm]的ARS | [AA] vril | [mm]的AI | [JJ] UIN | [JJ] uillet | [AA] O [欧盟] T | AOUT | [SS] eptembre | [OO] ctobre | [NN] ovembre | [日] [EE] CEMBRE)$
问题是我无法匹配包含unicode字母的字词:à,é,è等。
我在以下网站上发现:Unicode é
的unicode值为\u00E9
。我可以在正则表达式中集成此值吗?以及如何在正则表达式中使用unicode值。
void returnValue(string pattern)
{
bool x = false;
const boost::regex e("février");
x = boost::regex_search(pattern.c_str(),e);
if(x){ cout <<"found"<<endl; }
}
答案 0 :(得分:3)
您可以使用boost :: regex匹配unicode。有两种方法可以做到这一点。
如果您的平台的wchar_t可以包含Unicode字符并且您平台的C / C ++运行时正确处理宽字符常量,则依赖于wchar_t。 (这有很少的陷阱,没有建议,请在我提供的链接中阅读)
使用Unicode感知正则表达式类型(boost :: u32regex)。必须将Boost配置为通过Building With Unicode and ICU Support
http://www.boost.org/doc/libs/1_42_0/libs/regex/doc/html/boost_regex/unicode.html