2014-09-17 1 views
3

Я хочу совместить конец заданной строки с определенным шаблоном. Если шаблон существует, я хочу удалить его и добавить определенную строку в начало данной строки.Как использовать gsub(), чтобы добавить строку в начало и удалить строку с конца в одно и то же время?

например: Если у меня есть gradesmeanA и картина meanA, то я хочу, чтобы добавить «означает, класса А» на передней gradesmeanA и удалить meanA в конце. Таким образом, результат должен быть «средним классом класса».

Я хочу использовать gsub() и регулярные выражения. Я хочу сделать это за один шаг.

Что я пробовал:

s1<-gsub(pattern="/\\w /meanA$",replacement="mean of class A/\\w/","gradesmeanA") 

, но не работает.

ответ

8

Вы можете попробовать следующий код,

> s <- "gradesmeanA" 
> sub("^(.*?)meanA$", "mean of class A \\1", s, perl=T) 
[1] "mean of class A grades" 
> sub("^(.*)meanA$", "mean of class A \\1", s) 
[1] "mean of class A grades" 

шаблон Объяснение:

  • ^ Соответствует началу строки.
  • () Группа захвата, обычно используемая для захвата символов.
  • (.*)meanA$, все символы до последней строки meanA зафиксированы, а последний meanA соответствует.
  • В sub или gsub все соответствующие символы должны быть заменены. В нашем случае, все совпавшие символы (вся линия) заменяются mean of class A плюс chaarcters, присутствующий внутри индекса группы 1.
  • $ соответствует концу строки.

ИЛИ

Безобразная один,

> gsub("^(.*?)(mean)(A)$", "\\2 of class \\3 \\1", s, perl=T) 
[1] "mean of class A grades" 
+0

Параметр '?' И 'Perl = T' может быть опущен. –

+0

@ Avinash Радж Великий. Можете ли вы объяснить часть регулярного выражения, чтобы я мог учиться. – Vajira

+0

@ G.Grothendieck благодарит. Добавлен. –

Смежные вопросы