Заменить все строки, в которых нет хотя бы одной буквы - PullRequest
3 голосов
/ 05 августа 2020

Я хочу удалить строки, содержащие только специальные символы. Если есть хотя бы одна буква или цифра, строку следует оставить как есть.

test_cases <- c("a", "&", "&& ", "& &", "& ", "&a", "& a", "1", "& 1", "&1", "& a d", "a ")
exp_out <- c("a", "", "", "", "", "&a", "& a", "1", "& 1", "&1", "& a d", "a ")

Я использовал для этого негативный прогноз: быть довольно многословным и во время тестирования мне пришлось несколько раз его адаптировать, потому что я забыл некоторые крайние случаи. Таким образом, мне было интересно, могу ли я придумать «более простое» регулярное выражение, то есть regex, которое короче?

1 Ответ

5 голосов
/ 05 августа 2020

Вы можете использовать

test_cases[!grepl("[[:alpha:][:digit:]]", test_cases)] <- ""

См. Демонстрацию R

Команда !grepl("[[:alpha:][:digit:]]", test_cases) получит только те элементы, которые не содержат букв ([:alpha:]) или di git ([:digit:]).

Выход

 [1] "a"     ""      ""      ""      ""      "&a"    "& a"   "1"     "& 1"  
[10] "&1"    "& a d" "a "
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...