[英]Unexpected replacement in R gsub regular expression
我想在以下字符串中替换y,但如果将其与%组合,则不要替换。 以下正则表达式可以很好地找到模式:
gsub(pattern = "([^%]y)", replacement = "*", "%x%xxxx_y_%y%y")
# [1] "%x%xxxx*_%y%y"
但正如我期望的那样,替换了两个字符(_y)而不是一个字符(y)。 怎么了?
任何帮助表示赞赏! 安德里
1)如图所示,更改正则表达式中的括号,并对替换字符串进行相应的更改,如下所示:
gsub("([^%])y", "\\1", "%x%xxxx_y_%y%y")
## [1] "%x%xxxx__%y%y"
这是正则表达式的可视化:
([^%])y
2)可以使用gsubfn完全按照您的正则表达式进行操作:
library(gsubfn)
gsubfn("([^%]y)", ~ substr(x, 1, 1), "%x%xxxx_y_%y%y")
## [1] "%x%xxxx__%y%y"
这是正则表达式的可视化:
([^%]y)
更新:添加了可视化。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.