我分析了文本字符串,并尝试用逗号.
替换圆括号()
中的所有点,
我找到了一个与括号内的匹配匹配的正则表达式:
text <- "let's count (get . this . without dots) the days?"
brackets = "\\((.*?)\\)"
regmatches(text,regexpr(brackets,text))
给我:
[1] "(get . this . without dots)"
如here所述,我可以使用
gsubfn
进行更改:library(gsubfn)
gsubfn(brackets, ~ gsub("\\.", ",",x), text)
给我:
[1] "let's count get , this , without dots the days?"
而不是我认为的:
[1] "let's count (get , this , without dots) the days?"
为什么gsubfn忽略了我的比赛的一部分? (即方括号)
还有其他方法可以将
.
中的()
替换为,
最佳答案
您可以在原始正则表达式中保留任意数量的捕获组,而无需修改模式,只需通过传递gsubfn
参数告诉backref=0
使用整个匹配项即可:
gsubfn("\\((.*?)\\)", ~ gsub("\\.", ",",x), text, backref=0)
[1] "let's count (get , this , without dots) the days?"
关于r - 为什么gsubfn忽略了比赛的一部分?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58903769/