我想将给定字符串的结尾与某个模式匹配。如果有模式,那么我想删除它并在给定字符串的前面添加一个字符串。
例如:如果我有gradesmeanA
且模式为meanA
,那么我想添加" A类"的意思在gradesmeanA
的前面,并在结尾删除meanA
。所以结果应该是"意味着A级成绩"。
我想使用gsub()
和正则表达式。我想一步到位。
我尝试了什么:
s1<-gsub(pattern="/\\w /meanA$",replacement="mean of class A / \\w/","gradesmeanA")
但没有工作。
答案 0 :(得分: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
。mean of class A
以及组索引1中存在的字符替换。$
匹配一行的结尾。或强>
一个丑陋的人,
> gsub("^(.*?)(mean)(A)$", "\\2 of class \\3 \\1", s, perl=T)
[1] "mean of class A grades"