首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有例外的规则表示

有例外的规则表示
EN

Stack Overflow用户
提问于 2020-03-13 20:50:55
回答 1查看 56关注 0票数 1

我想知道向量中是否有模式,让我们说:

代码语言:javascript
复制
vector <- c(paste0(paste("MC", 1:25), c(rep("", 10), rep("-P1",10), rep("P1",5))), rep("RANDOM", 10),c("MC1","MC2","MC-3"), rep("MCRANDOM", 10))
vector

我想要那些有"MC“的,后面跟着一个数字。它们之间可以是数字,也可以是连字符或空格,然后是数字。我想排除那些较大代码的一部分,那些有P和另一个数字的代码,比如:“mc20-P1”“mc21P1”。这会检测到具有MC和number的那些:

代码语言:javascript
复制
vector[grepl("MC( |-)*[0-9]{1,}", vector)]

我试图使用^进行排除,但失败了:

代码语言:javascript
复制
vector[grepl("MC( |-)*[0-9]{1,}[^(-*)P]", vector)]

我怎样才能与MC和数字相匹配?(在我的实际数据中,是较大文本的一部分)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-03-13 20:55:42

我们可以在这里指定开始(^)和结束($),以匹配以'MC‘开头的字符串,后面跟着空格或-,然后再指定一个或多个数字(\\d+),直到结束。

代码语言:javascript
复制
grep("^MC[- ]?\\d+$", vector, value = TRUE)
#[1] "MC 1"  "MC 2"  "MC 3"  "MC 4"  "MC 5"  "MC 6"  
#[7] "MC 7"  "MC 8"  "MC 9"  "MC 10" "MC1"   "MC2"   "MC-3" 

如果MC可以是子字符串,则使用word边界(\\b)代替^

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

https://stackoverflow.com/questions/60677105

复制
相关文章

相似问题

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