regex 替换R中正则表达式中的+[重复]

amrnrhlw  于 2022-12-05  发布在  其他
关注(0)|答案(2)|浏览(138)

此问题在此处已有答案

[How do I deal with special characters like ^$.?*|+(){ in my regex?(2个答案)
3天前关闭。
我想替换表达式中的+号。当我用正则表达式替换时,它将这个+解释为“at one or more”,而实际上我希望它被解释为文字+
我手头的问题是我想格式化下面的字符串,它的格式不好。“model = y+ x1+ x2 +x3 +x4”我想它是:“型号= y + x1+ x2 + x3 + x4”
我有很多这样的表达式需要重新编写,我想使用正则表达式而不是手动调整格式。我想的是这样的:gsub('\s+\s',' + ', string),当然这是行不通的。
有没有办法解决这个问题?什么是正则表达式的正确方法来实现这一点?我已经在网上搜索,但没有结果。

7qhs6swi

7qhs6swi1#

(至少)有两种方法可以做到这一点:

  • 使用(双)反斜杠转义(ObXKCD 12
  • 指定+是字符类的成员(即放在方括号内)

我在正则表达式中添加了一些*,使其更通用。

string <- "model = y+ x1+ x2 +x3 +x4"
gsub('\\s*[+]\\s*', ' + ', string)
gsub('\\s*\\+\\s*', ' + ', string)
tkqqtvp1

tkqqtvp12#

使用stringr包,我们可以:首先我们使用str_replace_all,为了替换+前后的空格,我们使用\\+
这会在某些位置产生重复的空格。
str_squish()删除字符串开头和结尾的空格,还减少字符串中重复的空格!
第一个

相关问题