【发布时间】:2013-11-04 10:18:19
【问题描述】:
R 有几个特殊的与语言环境无关的正则表达式字符类。
来自?regex:
‘[[:alnum:]]’表示‘[0-9A-Za-z]’,除了后者 取决于语言环境和字符编码,而 前者独立于语言环境和字符集。
我想知道什么时候会出现特定于语言环境的问题。
我根据?Comparison 帮助页面中的信息尝试了两个示例,这些示例描述了字符串的排序方式:
在爱沙尼亚语中,“Z”位于“S”和“T”之间
和
在丹麦语中,“aa”在“z”之后作为单个字母排序
在第一个示例中,我希望 T、U、V、W、X 和 Y 不匹配。在第二个示例中,我希望 aa 不匹配。
Sys.setlocale("LC_ALL", "Estonian")
grepl("[A-Z]", LETTERS)
Sys.setlocale("LC_ALL", "Danish")
grepl("[a-z]", "aa")
由于所有值都返回TRUE,看来locale在这里不是问题。
您能找到一个区域设置导致 [a-z] 等传统正则表达式类失败的示例吗?
更新:我有一个部分答案:重音罗马字符在使用 [a-zA-Z] 和 [[:alpha:]] 时表现不同。我仍然很想知道是否还有更多的差异示例,以及语言环境或编码是否会影响非罗马字符的匹配,以及实际上如何匹配非罗马字符。
【问题讨论】: