Использование группы и обратной ссылки в регулярном выражении в R - stringr :: str_replace - PullRequest
1 голос
/ 17 апреля 2019

У меня простая ситуация, но я изо всех сил пытаюсь использовать группу и обратную ссылку в регулярном выражении.Как я могу сделать это с stringr::str_replace?.

Например, я хочу преобразовать test.txt в test.evaluation.txt.Я хочу что-то вроде этого:

stringr::str_replace("test.txt", "\\.(\\1)$", ".evaluation.(\\1)")

Я бы хотел использовать группу "1" для сохранения формата файла.Заранее спасибо, если кто-то может помочь с ответом в этом формате.

Ответы [ 3 ]

4 голосов
/ 17 апреля 2019

РЕДАКТИРОВАТЬ С stringr:

stringr::str_replace_all(my_string,"([a-z])(.txt)","\\1.evaluation\\2")
[1] "test.evaluation.txt"

Не самый эффективный:

my_string<-"test.txt"
res<-unlist(strsplit(my_string,"\\."))
paste0(res[1],".evaluation.",res[2])
[1] "test.evaluation.txt"
1 голос
/ 17 апреля 2019

с группами захвата:

sub("\\.([[:alnum:]]+)$","\\.evaluation\\.\\1","text.txt")
[1] "text.evaluation.txt"
1 голос
/ 17 апреля 2019

Параметр с sub для соответствия . и замены его на ., за которым следует 'оценка' и еще один .

sub("\\.", ".evaluation.", my_string)
#[1] "test.evaluation.txt"
...