Regex 如何使用gsub()在前面添加字符串,同时从末尾删除字符串?

Regex 如何使用gsub()在前面添加字符串,同时从末尾删除字符串?,regex,r,gsub,Regex,R,Gsub,我想将给定字符串的末尾匹配到某个模式。如果有模式,那么我想删除它并在给定字符串的前面添加一个特定的字符串 例如:如果我有gradesmeanA并且模式是meanA,那么我想在gradesmeanA前面添加“A级平均值”,并在末尾删除meanA。因此,结果应为“A级成绩平均值” 我想使用gsub()和正则表达式。我想一步到位 我尝试的是: s1<-gsub(pattern="/\\w /meanA$",replacement="mean of class A / \\w/","gradesm

我想将给定字符串的末尾匹配到某个模式。如果有模式,那么我想删除它并在给定字符串的前面添加一个特定的字符串

例如:如果我有
gradesmeanA
并且模式是
meanA
,那么我想在
gradesmeanA
前面添加“A级平均值”,并在末尾删除
meanA
。因此,结果应为“A级成绩平均值”

我想使用
gsub()
和正则表达式。我想一步到位

我尝试的是:

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

s1您可以尝试下面的代码

> 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"

perl=T
可以省略。@Avinash Raj很棒。你能解释一下正则表达式部分吗?这样我就可以学习了。@Vajira-你也可以得到很好的正则表达式解释,因为只执行了一次替换。你可以使用
sub
函数而不是
gsub
@Richard Scriven该站点给出了很好的解释。
> gsub("^(.*?)(mean)(A)$", "\\2 of class \\3 \\1", s, perl=T)
[1] "mean of class A grades"