我想知道向量中是否有模式,让我们说:
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的那些:
vector[grepl("MC( |-)*[0-9]{1,}", vector)]我试图使用^进行排除,但失败了:
vector[grepl("MC( |-)*[0-9]{1,}[^(-*)P]", vector)]我怎样才能与MC和数字相匹配?(在我的实际数据中,是较大文本的一部分)
发布于 2020-03-13 20:55:42
我们可以在这里指定开始(^)和结束($),以匹配以'MC‘开头的字符串,后面跟着空格或-,然后再指定一个或多个数字(\\d+),直到结束。
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)代替^
https://stackoverflow.com/questions/60677105
复制相似问题