我对反向引用的使用感到非常困惑。
strings <- c("^ab", "ab", "abc", "abd", "abe", "ab 12")
gsub("(ab) 12", "\\1 34", strings)
[1] "^ab" "ab" "abc" "abd" "abe" "ab 34"
gsub("(ab)12", "\\2 34", strings)
[1] "^ab" "ab" "abc" "abd" "abe" "ab 12"
我知道 \1 指的是第一个子模式(从左向右读取),\2 指的是第二个子模式,以此类推。但是我不知道这些子模式具体意味着什么。为什么 \1 和 \2 会给出不同的输出。
gsub("(ab)", "\\1 34", strings)
[1] "^ab 34" "ab 34" "ab 34c" "ab 34d" "ab 34e" "ab 34 12"
此外,为什么我在(ab)后面删除12后,它会得出这样的结果?
gsub("ab", "\\1 34", strings)
[1] "^ 34" " 34" " 34c" " 34d" " 34e" " 34 12"
此外,如果ab没有括号,那么这表示什么?
我对反向引用真的一团糟,希望有人能清楚地解释一下其逻辑。
()
内的任何模式都是捕获组。无论如何,在你的第一个例子中我得到的结果不同。最后一个元素是ab 34
而不是ab 12
。 - nicola