繁体   English   中英

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

[英]How to use gsub() to add a string to the front and remove a string from the end at same time?

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

例如:如果我有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 Amean of class A加上组索引1中的字符串替换。
  • $匹配一行的结尾。

要么

一个丑陋的,

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM