如何在R正则表达式中打印/查看预定义模式[:alnum:],[:punct:],[:digit:],[:blank:]等

时间:2016-09-21 07:52:45

标签: r regex grep posix locale

在哪里可以看到R中正则表达式的预定义模式的代码?文档说它与locales/POSIX locale

有关
   > [[:alpha:]]
   > [:alpha:]

不打印任何内容。如何查找预定义模式和函数应该匹配的次数等。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:4)

首先我们阅读help("regex")

  

[:lower:]
   当前语言环境中的小写字母。

类似于[:upper:][:alpha:]只是它们的结合。

然后我们可以检查当前语言环境的字符集:

Sys.getlocale("LC_CTYPE")
#[1] "German_Germany.1252"

l10n_info()
#$MBCS
#[1] FALSE
#
#$`UTF-8`
#[1] FALSE
#
#$`Latin-1`
#[1] TRUE
#
#$codepage
#[1] 1252

然后我们可以去互联网,例如到Wikipedia

然后我们可以试试这个:

gsub("[^[:alpha:]]", "", rawToChar(as.raw(1:(16^2-1))))
#[1] "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõöøùúûüýþÿ"
gsub("[^[:cntrl:]]", "", rawToChar(as.raw(1:(16^2-1))))
#[1] "\001\002\003\004\005\006\a\b\t\n\v\f\r\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037\177€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ"