регулярное выражение в R: диапазон номеров после буквы в конце строки - PullRequest
0 голосов
/ 27 апреля 2020

У меня есть имена столбцов, которые выглядят примерно так:

colnames <- c("a81", "b82", "a181", "b182")

Я хочу извлечь только столбцы, которые имеют 81 или 82 в конце, и перед этими числами (81 и 82) должен быть письмо. Я хочу использовать регулярное выражение в grepl, и ожидаемый результат здесь

TRUE TRUE FALSE FALSE

До сих пор я пробовал

grepl("[:alpha:][81-82]$", colnames)

К сожалению, код возвращает FALSE для всех записей , Что я делаю не так?

Ответы [ 2 ]

2 голосов
/ 27 апреля 2020

Я бы go с

grepl("[a-z](81|82)$", colnames)

[az] означает любую букву и скобки сгруппируют любой из следующих 2 символов: т.е. 81 ИЛИ (|) 82.

2 голосов
/ 27 апреля 2020

[:alpha:] необходимо изменить на [[:alpha:]], и вместо [81-82] это может быть 8, за которым следует [1-2]

grepl("^[[:alpha:]]8[1-2]$", colnames)
#[1]  TRUE  TRUE FALSE FALSE

Или мы можем указать

grepl("^[A-Za-z]8[1-2]$", colnames)
...