R 正则表达式-从公式中删除poly()
我在R中有一个公式作为字符向量,我需要从这个公式中删除R 正则表达式-从公式中删除poly(),r,regex,formula,R,Regex,Formula,我在R中有一个公式作为字符向量,我需要从这个公式中删除poly(),如果存在的话 例如,到目前为止,我的一些尝试(未成功): p[1]“挖掘+” 唯一(子(p,\\2,“,”开采+多边形(覆盖层,3)+spp”)) #>[1]“封面,3” 唯一(子(p,\\3,“,”开采+多边形(覆盖层,3)+spp”)) #> [1] "" 独特的(子(p,\\4”,“开采+多边形(覆盖层,3)+spp”)) #> [1] ")" 唯一(子(p,\\5,“,”开采+多边形(覆盖层,3)+spp”)) #>[1
poly()
,如果存在的话
例如,到目前为止,我的一些尝试(未成功):
p[1]“挖掘+”
唯一(子(p,\\2,“,”开采+多边形(覆盖层,3)+spp”))
#>[1]“封面,3”
唯一(子(p,\\3,“,”开采+多边形(覆盖层,3)+spp”))
#> [1] ""
独特的(子(p,\\4”,“开采+多边形(覆盖层,3)+spp”))
#> [1] ")"
唯一(子(p,\\5,“,”开采+多边形(覆盖层,3)+spp”))
#>[1]“+spp”
我期望的结果是:
输入:“矿山+多边形(覆盖层,3)+spp”
输出:“开采+覆盖+spp”
我尝试了这么多模式,但不是poly(…,3)
没有被删除,就是,3)
或,3
保留在结果字符串中。。。感谢您的帮助!(顺便说一句,3
是任意的,模式应该删除任何度值…试试这个正则表达式:
poly\(([^,]*)[^)]*\)
将匹配项替换为组1内容
gsub("poly\\((.+),\\s*\\d+\\)", "\\1", inp)
# [1] "mined + cover + spp"
说明:
-匹配poly\(
poly(
-匹配任何非([^,]*)
字符的0+次出现次数。这在组1中捕获,
-匹配任何非[^]*\)
字符的0+次出现次数,后跟)
)
gsub("poly\\((.+),\\s*\\d+\\)", "\\1", inp)
# [1] "mined + cover + spp"
或者以一种更易于处理的逐步方式(因为您正在处理更复杂的正则表达式):
尝试gsub(\\bpoly\\(\\s*(\\w+)(:\\s*,[^)]*)?\\),“\\1”,x)
。看见