如何在 C/C++ PCRE 正则表达式中使用 UTF-8 文字字符



我们正在尝试匹配德语字符串。

Munich tausendschöne Jungfräulein ausendschçne

我们能够将其与PCRE正则表达式相匹配,该正则表达式使用积极的前瞻和多个UTF-8代码点的序列。

例如,(?=.+(x{0068}x{00F6})){1} .

但是,当我们将任何 UTF-8 文字、öäç添加到 PCRE 正则表达式中时,pcre_compile()抱怨无效的 UTF-8 正则表达式字符串。

使用带有 PCRE_UTF8PCRE_UCPPCRE_CASELESS 选项激活的 C/C++ PCRE 正则表达式,这些选项使用 UTF-8 文字、öäç什么是使用 UTF-8 文字的有效 PCRE 正则表达式öäç

PCRE开发人员Giuseppe D'Angelo在pcre邮件列表中回答了我们的问题:

这是可能的,但必须确保执行字符集 编译器设置为正确输出 UTF-8 序列。是不是 箱?尝试获取要传递到的字符串文本的十六进制转储 pcre_compile(最终,尝试查看汇编程序输出)。

最新更新