正则表达式 – 语言环境何时影响R的正则表达式?
R有几个特殊的与语言环境无关的正则表达式字符类.
从?正则表达式:
我想知道何时可能出现特定于语言环境的问题. 我根据“比较帮助”页面中的信息尝试了两个示例,它描述了字符串的排序方式:
和
在第一个例子中,我希望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:]]的重音罗马字符表现不同.我仍然有兴趣知道是否有更多的差异示例,以及区域设置或编码是否会影响非罗马字符的匹配,实际上,您是如何匹配非罗马字符的. 解决方法
似乎重音罗马字符的行为存在差异.
grepl("[a-zA-Z]",c("?","é")) ## [1] FALSE FALSE grepl("[[:alpha:]]","é")) ## [1] TRUE TRUE 奇怪的是,非罗马字符无法匹配任何一个字符类(至少在我尝试过的少数语言环境和编码中). mu <- "U03BC" ya <- "U044F" jeem <- "U062C" grepl("[a-zA-Z]+",c(mu,ya,jeem)) ## [1] FALSE FALSE FALSE grepl("[[:alpha:]]",jeem)) ## [1] FALSE FALSE FALSE (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |