Удалите последовательности точек с запятой разной длины с помощью Regex
Учитывая некоторые данные:
test <- data.frame(strings = c('a;b;c;;;;;;;', 'd;e;f;g;h;i;j;k;l;m', 'n;o;p;q;r;;;;;', ';;;;;;;;;' ))
Как мне удалить все конечные точки с запятой, чтобы получить:
test <- data.frame(strings = c('a;b;c', 'd;e;f;g;h;i;j;k;l;m', 'n;o;p;q;r', '' ))
Особенности этого кадра данных:
- максимум 9 точек с запятой в строке, разделяя не более 10 символов
- строки содержат различное количество символов, а точки с запятой всегда добавляют к 9
- когда строка не содержит символов, она содержит 9 точек с запятой.
2 ответа
Решение
Я думаю, что вы хотите выразить словами "одна или несколько точек с запятой, за которыми следует конец строки". Так что это работает:
library(dplyr)
test %>%
mutate(newstrings = gsub(";{1,}$", "", strings))
strings newstrings
1 a;b;c;;;;;;; a;b;c
2 d;e;f;g;h;i;j;k;l;m d;e;f;g;h;i;j;k;l;m
3 n;o;p;q;r;;;;; n;o;p;q;r
4 ;;;;;;;;;
Вы можете использовать следующее регулярное выражение, чтобы выбрать всю последовательность из 1 или более точек с запятой в конце вашей строки и заменить ее на '', чтобы обрезать их.
;+$