测试字符串是否包含字母和字符

时间:2020-05-06 09:31:05

标签: r

我得到了这个向量:

bar <- c("aaa:something", "111:something", "a1a1:something", "1a:something")

我想检查冒号(:)前面是否有字母数字。它可以任意很多,但都需要放在其中,所以结果应该是

FALSE, FALSE, TRUE, TRUE

我该怎么做?

3 个答案:

答案 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)