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

正则表达式 – 正则表达式保留一些匹配,删除其他匹配

发布时间:2020-12-14 06:03:17 所属栏目:百科 来源:网络整理
导读:我在使用这个正则表达式时遇到了麻烦.考虑以下向量. vec - c("new jersey","south dakota","virginia:chincoteague","washington:whidbey island","new york:main") 在那些包含:的字符串中,我想只保留带有main的字符串:,导致 [1] "new jersey" "south dako
我在使用这个正则表达式时遇到了麻烦.考虑以下向量.

> vec <- c("new jersey","south dakota","virginia:chincoteague","washington:whidbey island","new york:main")

在那些包含:的字符串中,我想只保留带有main的字符串:,导致

[1] "new jersey" "south dakota" "new york:main"

到目前为止,我只能用这种丑陋的嵌套噩梦到达那里,这显然远非最佳.

> g1 <- grep(":",vec)
> vec[ -g1[grep("main",grep(":",vec,value = TRUE),invert = TRUE)] ]
# [1] "new jersey"    "south dakota"  "new york:main"

如何编写单个正则表达式来保持:main但删除其他包含:?

解决方法

使用| (选择一个包含:main或者根本不包含:):

> vec <- c("new jersey",+            "washington:whidbey island","new york:main")
> grep(":main|^[^:]*$",vec)
[1] 1 2 5
> vec[grep(":main|^[^:]*$",vec)]
[1] "new jersey"    "south dakota"  "new york:main"

(编辑:李大同)

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

    推荐文章
      热点阅读