我想将给定字符串的末尾匹配到某个模式。如果有模式,那么我要删除它,并在给定字符串的前面添加一个特定的字符串。
例如:如果我有gradesmeanA
并且模式是meanA
,那么我想在gradesmeanA
的前面添加“类A的均值”,并在最后删除meanA
。因此,结果应为“ A级平均水平”。
我想使用gsub()
和正则表达式。我要一步一步做。
我试过的
s1<-gsub(pattern="/\\w /meanA$",replacement="mean of class A / \\w/","gradesmeanA")
但是没有用
最佳答案
您可以尝试以下代码,
> 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
加上组索引1中存在的透明字符。$
匹配行尾。要么
丑陋的
> gsub("^(.*?)(mean)(A)$", "\\2 of class \\3 \\1", s, perl=T)
[1] "mean of class A grades"