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

Vaj*_*ira 3 regex r gsub

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

例如:如果我有gradesmeanA和模式是meanA那么我想在前面加上"A类的意思" gradesmeanAmeanA在最后删除.所以结果应该是"A级成绩".

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

我尝试了什么:

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

但没有奏效.

Avi*_*Raj 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"
Run Code Online (Sandbox Code Playgroud)

模式说明:

  • ^ 匹配一行的开头.
  • () 捕获组通常用于捕获字符.
  • (.*)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"
Run Code Online (Sandbox Code Playgroud)