Проверить, содержит ли строка буквы и символы - PullRequest
0 голосов
/ 06 мая 2020

Получился вот такой вектор:

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

Я хочу проверить, есть ли перед двоеточием (:) буквы и числа. Их может быть временно много, но оба должны быть там, поэтому результат должен быть

FALSE, FALSE, TRUE, TRUE

Как я могу это сделать?

Ответы [ 3 ]

2 голосов
/ 06 мая 2020

Предполагая, что цифры и буквы будут в любом порядке:

grepl('([a-zA-Z]+[0-9]+)|([0-9]+[a-zA-Z]+):', bar)
#[1] FALSE FALSE  TRUE  TRUE
2 голосов
/ 06 мая 2020

Вы можете объединить два grepl например:

grepl("[[:digit:]].*:", bar) & grepl("[[:alpha:]].*:", bar)
#[1] FALSE FALSE  TRUE  TRUE
#grepl("[0-9].*:", bar) & grepl("[a-zA-Z].*:", bar) #Alternative

To сделать это в одном go вы можете использовать непотребляющее выражение:

grepl("(?=.*[[:digit:]]).*[[:alpha:]].*:", bar, perl=TRUE)
#[1] FALSE FALSE  TRUE  TRUE
1 голос
/ 06 мая 2020
grepl("[a-z]+\\d+.*\\:|\\d+[a-z]+.*\\:", bar, ignore.case = TRUE)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...