[英]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.