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

前端之家收集整理的这篇文章主要介绍了正则表达式 – 正则表达式保留一些匹配,删除其他匹配前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我在使用这个正则表达式时遇到了麻烦.考虑以下向量.

> 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"

猜你在找的正则表达式相关文章