Unicode正则表达式

unicode regular expressions c++

本文关键字:正则表达式 Unicode      更新时间:2023-10-16

我想使用正则表达式匹配单词" fcv "或任何其他月份。

正则表达式:

^ (JANVIER | FEVRIER火星| |艾薇儿| MAI | JUIN | JUILLET来向| | SEPTEMBRE | OCTOBRE | | 11月DECEMBRE | 5月1月2月3月4月| | | | |君| | | 7月8月9月| | | 10月11月12月| | [jJ] anvier | (Ff)埃夫里市| (mM) ars | (aA)沃瑞尔| (mM) ai | [jJ]印尼| [jJ] uillet | (aA) o(欧盟)来向t | | [sS] eptembre | (oO) ctobre | (nN) ovembre | (dD) [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; }
}

您可以使用boost::regex匹配unicode。有两种方法。

  1. 如果您的平台的wchar_t可以保存Unicode字符,并且您的平台的C/c++运行时正确处理宽字符常量,则依赖wchar_t。(这有一些陷阱,不建议,阅读我提供的链接)

  2. 使用支持Unicode的正则表达式类型(boost::u32regex)。Boost必须配置为通过Unicode和ICU支持构建启用此功能

http://www.boost.org/doc/libs/1_42_0/libs/regex/doc/html/boost_regex/unicode.html