首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在两个可能的分隔符之一之前查找单词

在两个可能的分隔符之一之前查找单词
EN

Stack Overflow用户
提问于 2012-10-03 00:17:14
回答 3查看 139关注 0票数 5
代码语言:javascript
运行
复制
word:12335
anotherword:2323434
totallydifferentword/455
word/32

我只需要使用base R函数在:/之前抓取字符串。我可以使用stringr来做到这一点,但是我不想给我的包添加另一个依赖项。单词可以具有可变数量的字符,但始终以分隔符(其中之一)结束。我不需要保留之后发生的事情。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-10-03 00:22:50

也许可以试试:

代码语言:javascript
运行
复制
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不会那么有说服力,但速度更快。

我假设这个正则表达式也可以工作:

代码语言:javascript
运行
复制
gsub("([a-z]+)([/|:])([0-9]+)", "\\1", x)

在这种情况下,gsub更快:

代码语言:javascript
运行
复制
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
票数 3
EN

Stack Overflow用户

发布于 2012-10-03 00:22:53

在Ruby http://rubular.com/r/PzVQVIpKPq中,类似这样的代码就可以了。

代码语言:javascript
运行
复制
^(\w+)(?:[:\/])

从字符串的前面开始,抓取任何单词字符并捕获它们,直到到达非捕获的/:

票数 2
EN

Stack Overflow用户

发布于 2012-10-03 00:21:11

This regex seems to work。你能在R中使用它吗?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12694220

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档