我得到了这个向量:
bar <- c("aaa:something", "111:something", "a1a1:something", "1a:something")
我想检查冒号(:
)前面是否有字母和数字。它可以任意很多,但都需要放在其中,所以结果应该是
FALSE, FALSE, TRUE, TRUE
我该怎么做?
答案 0 :(得分:2)
您可以像这样组合两个grepl
:
grepl("[[:digit:]].*:", bar) & grepl("[[:alpha:]].*:", bar)
#[1] FALSE FALSE TRUE TRUE
#grepl("[0-9].*:", bar) & grepl("[a-zA-Z].*:", bar) #Alternative
要一次性完成,您可以使用非消耗性表达式:
grepl("(?=.*[[:digit:]]).*[[:alpha:]].*:", bar, perl=TRUE)
#[1] FALSE FALSE TRUE TRUE
答案 1 :(得分:2)
假设数字和字母将按照您可以执行的任何顺序排列:
grepl('([a-zA-Z]+[0-9]+)|([0-9]+[a-zA-Z]+):', bar)
#[1] FALSE FALSE TRUE TRUE
答案 2 :(得分:1)
grepl("[a-z]+\\d+.*\\:|\\d+[a-z]+.*\\:", bar, ignore.case = TRUE)