在R中的字符串中用“ - ”代替“+ - ”

时间:2015-03-03 09:28:07

标签: regex r

我有一个字符串:

s="a+3*b+4*c+-5*d+-6*e"

我想将其转换为:

s_want="a+3*b+4*c-5*d-6*e"

这里“+ - ”正在被“ - ”取代。我试过跟着

> gsub("+-","-",s)
[1] "a+3*b+4*c+-5*d+-6*e"

你可以看到这只是行不通。事实上,我也试过了其他一些替代品。

> gsub("+-","XX",s)
[1] "a+3*b+4*c+XX5*d+XX6*e"

似乎“+”符号对于R是不可见的。我怀疑它与正则表达式有关。如果我找到了什么,让我搜索并发布更新。谢谢。 更新: 经过一番搜索,我发现“fixed = T”是我正在寻找的解决方案。

> gsub("+-","-",s,fixed=T)
[1] "a+3*b+4*c-5*d-6*e"

感谢所有打扰搜索解决方案的人。

1 个答案:

答案 0 :(得分:4)

由于+是正则表达式中的特殊元字符(重复前一个标记一次或多次),因此您需要将其转义或将+置于其中字符类( [+] ),以匹配文字+符号。

gsub("\\+-","-",s)

OR

gsub("[+]-","-",s)