我在使用这个正则表达式时遇到了麻烦.考虑以下向量.
> 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"