R 有几个特殊的与语言环境无关的正则表达式字符类。
来自?regex
:
'[[:alnum:]]' 表示'[0-9A-Za-z]',除了后者取决于语言环境和字符编码,而前者独立于语言环境和字符集。
我想知道什么时候会出现特定于语言环境的问题。
我根据帮助页面中的信息尝试了两个示例,这些示例?Comparison
描述了字符串的排序方式:
在爱沙尼亚语中,“Z”介于“S”和“T”之间</p>
和
在丹麦语中,'aa' 排序为单个字母,在 'z' 之后</p>
在第一个示例中,我希望 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")
由于所有值都 return TRUE
,因此 locale 似乎在这里不是问题。
你能找到一个语言环境导致传统正则表达式类[a-z]
失败的例子吗?
更新:我有一个部分答案:重音罗马字符在使用[a-zA-Z]
vs.时表现不同[[:alpha:]]
。我仍然很想知道是否有更多的差异示例,以及语言环境或编码是否会影响非罗马字符的匹配,实际上,你如何匹配非罗马字符。