regex - 在R中的字符串中用 "+-"替换 "-"

标签 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"

感谢所有费心寻找解决方案的人。

最佳答案

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

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

或者

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

关于regex - 在R中的字符串中用 "+-"替换 "-",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28828211/

相关文章:

java - 正则表达式问题 ^[a-zA-Z0-9]{5,10}$

c# - 正则表达式获取字符串中的十进制值

r - 根据模式从字符串创建子串,并将模式保留在子串中

r - as.name() 不能作为参数

r - pca - 哪个特征向量对应于哪个特征值

删除 R 图形设备中的所有边距

c# - 将 c# 正则表达式转换为 javascript 正则表达式

mysql - Perl 脚本或 MySQL 修复?

.net - 至少两个唯一字符的正则表达式

r - SSL 验证导致 RCurl 和 httr 中断 - 在一个应该合法的网站上