加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

正则表达式 – 语言环境何时影响R的正则表达式?

发布时间:2020-12-14 05:47:07 所属栏目:百科 来源:网络整理
导读:R有几个特殊的与语言环境无关的正则表达式字符类. 从?正则表达式: ‘[[:alnum:]]’ means ‘[0-9A-Za-z]’,except the latter depends upon the locale and the character encoding,whereas the former is independent of locale and character set. 我想
R有几个特殊的与语言环境无关的正则表达式字符类.

从?正则表达式:

‘[[:alnum:]]’ means ‘[0-9A-Za-z]’,except the latter
depends upon the locale and the character encoding,whereas the
former is independent of locale and character set.

我想知道何时可能出现特定于语言环境的问题.

我根据“比较帮助”页面中的信息尝试了两个示例,它描述了字符串的排序方式:

in Estonian ‘Z’ comes between ‘S’ and ‘T’

in Danish ‘aa’ sorts as a single letter,after ‘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:]]的重音罗马字符表现不同.我仍然有兴趣知道是否有更多的差异示例,以及区域设置或编码是否会影响非罗马字符的匹配,实际上,您是如何匹配非罗马字符的.

解决方法

似乎重音罗马字符的行为存在差异.

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读