【问题标题】:Returning non-alphanumeric characters found by REGEX返回 REGEX 找到的非字母数字字符
【发布时间】:2016-09-22 11:49:04
【问题描述】:

查找和返回包含非字母数字字符的单词没有问题,但我想做的是返回找到的非字母数字字符。例如:

a <- c("hello?", "goodbye","hi!")
grep("[^[:alnum:]]", a, value=TRUE)

返回:

[1] "hello?" "hi!"

但我想返回的是:

[1] "?" "!"

有什么想法吗?谢谢!

编辑:我喜欢这个......两个用户响应,四种不同的方式来完成它。我学到了很多东西。谢谢!

【问题讨论】:

  • @Cath 小版本:gsub("[[:alnum:]]", "", grep("[^[:alnum:]]", a, value=TRUE))gsub("[[:alnum:]]", "", a[grepl("[^[:alnum:]]", a)])
  • @lmo,谢谢你,好主意!

标签: r regex


【解决方案1】:

我们可以使用gsub 通过匹配模式([^[:punct:]]+ - 表示一个或多个非标点字符)来删除字母数字字符并将其替换为空格("")。我们使用nzcharsetdiff 删除空白。

setdiff(gsub("[^[:punct:]]+", "", a), "")
#[1] "?" "!"

或者另一个选项是str_extract from stringr

library(stringr)
as.vector(na.omit(str_extract(a, "[[:punct:]]+")))
#[1] "?" "!"

【讨论】:

    猜你喜欢
    • 2016-10-29
    • 1970-01-01
    • 2011-11-01
    • 2017-10-16
    • 2013-09-15
    • 2012-06-27
    • 2011-03-11
    • 2013-03-01
    • 1970-01-01
    相关资源
    最近更新 更多