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

正则表达式 – 在两个可能的分隔符之一之前找到一个单词

发布时间:2020-12-14 05:59:41 所属栏目:百科 来源:网络整理
导读:word:12335anotherword:2323434totallydifferentword/455word/32 我需要在:或/之前使用基本R函数来获取字符串.我可以使用stringr执行此操作,但不希望向我的包添加另一个依赖项.单词可以具有可变数量的字符,但总是以(一个)分隔符结束.我不需要保留之后的内容
word:12335
anotherword:2323434
totallydifferentword/455
word/32

我需要在:或/之前使用基本R函数来获取字符串.我可以使用stringr执行此操作,但不希望向我的包添加另一个依赖项.单词可以具有可变数量的字符,但总是以(一个)分隔符结束.我不需要保留之后的内容.

解决方法

也许试试:

x <- c("word:12335","anotherword:2323434","totallydifferentword/455","word/32")
lapply(strsplit(x,":|/"),function(z) z[[1]]) #as a list
sapply(strsplit(x,function(z) z[[1]]) #as a string

有gsub的正则表达式解决方案也可以工作但是在我遇到类似问题的经历中,strsplit将不那么雄辩但更快.

我认为这个正则表达式也会起作用:

gsub("([a-z]+)([/|:])([0-9]+)","1",x)

在这种情况下,gsub更快:

Unit: microseconds
        expr    min     lq median     uq     max
1     GSUB() 19.127 21.460 22.392 23.792 106.362
2 STRSPLIT() 46.650 50.849 53.182 54.581 854.162

(编辑:李大同)

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

    推荐文章
      热点阅读