Удалите указанную c подстроку в строке с выражением регулярного выражения в R - PullRequest
1 голос
/ 12 апреля 2020

Я довольно новичок в мире регулярных выражений, и я борюсь с этой проблемой. Я хотел бы удалить указанное c слово в строке. Я смог удалить последние n символов следующим образом:

gsub('.{5}$', '', mystring)

вот так

mystring = "HOBBIES_1_001_CA_1"
newstring= "HOBBIES_1_001"

Теперь я хотел удалить центральную подстроку таким образом :

mystring = "HOBBIES_1_001_CA_1"
newstring= "HOBBIES_CA_1"

Любая помощь приветствуется заранее !!

Ответы [ 2 ]

1 голос
/ 12 апреля 2020

Мы можем извлечь строку в 2 части, используя sub. Первая часть - это буквы [A-Z] перед первым подчеркиванием, а вторая часть - [A-Z], за которой следует число в конце предложения.

sub('([A-Z])_.*?([A-Z]+_\\d+)$', '\\1_\\2',mystring)
#[1] "HOBBIES_CA_1"
1 голос
/ 12 апреля 2020

Мы можем использовать substring, поскольку это будет быстрее

substring(mystring, 1, nchar(mystring)-5)
[#1] "HOBBIES_1_001"

Чтобы удалить среднюю строку, сопоставьте _, за которым следуют одна или несколько цифр (\\d+), за которыми следует _ и цифры и заменить на пустое ("")

sub("_\\d+_\\d+", "", mystring)
#[1] "HOBBIES_CA_1"

Или другой вариант - захватить подстроку и заменить на обратную ссылку

sub("^([^_]+)_\\d+_\\d+", "\\1", mystring)
#[1] "HOBBIES_CA_1"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...