正则表达式库中的区域设置特定行为?

时间:2012-01-28 07:33:54

标签: c++ regex c++11 locale

当我使用特定区域设置灌注正则表达式对象时,它如何影响匹配行为?它会影响整理或其他任何事情吗?我似乎无法在任何地方找到解释。

2 个答案:

答案 0 :(得分:42)

它至少影响以下内容:

  • 整理:充满法语区域设置的正则表达式[a-f]应与角色é匹配。
  • 同样,芬兰语区域设置中的\w应与字符ä匹配(但[a-z]应该,因为å,ä和ö在芬兰语中的z后整理。在德语中但是,[a-z]应与ä相匹配。)
  • 在兼容Unicode的语言环境中,应使用Unicode equivalence算法,以便组合形式的字符与分解形式匹配,反之亦然。
  • 使用与POSIX兼容的正则表达式(基本,扩展,awk,grep和egrep),POSIX character classes应该是区域设置感知的:[=e=]应该与法语区域设置中的é匹配,但不能与英语区域。

答案 1 :(得分:3)

在西班牙语区域,请注意“ch”和“ll”不再被视为字母表中的单个字母,因为相关实体对此进行了更改。我找不到确切的日期,但现在它“ch”和“ll”是两个字母:

http://en.wikipedia.org/wiki/Ll

我认为实施现在反映了这一事实。