如何正确地替换R中匹配模式的一部分



一个简单的例子。

原始字符矢量:

> sats
[1] "G 5" "G 7" "G 9" "G10" "G13" "G16" "G19" "G20" "G27" "G28" "G30"

然后gsub:

sats=gsub("G ","G0",sats)
> sats
[1] "G05" "G07" "G09" "G10" "G13" "G16" "G19" "G20" "G27" "G28" "G30"

匹配模式为"G"。有没有办法让我只更改第二个字符,而不是覆盖整个匹配的部分。或者,例如在匹配片段的字符之间插入一个字符。我想做的是弄清楚regexp工具是如何工作的,而不是解决特定的问题。谢谢

您似乎在询问如何使用子匹配。

替换图案的一部分可以通过捕获需要保留的内容并只匹配要替换的内容来完成

查看IDEONE演示:

sats <- c("G 5","G 7","G 9","G10","G13","G16","G19","G20","G27","G28","G30")
gsub('([[:alpha:]]+) ', '\10', sats)
##  [1] "G05" "G07" "G09" "G10" "G13" "G16" "G19" "G20" "G27" "G28" "G30"

这里,([[:alpha:]]+)是存储在缓冲区#1中的捕获组(一对未标注括号),我们可以用1反向引用在替换模式中调用它。(注意,(G) 是一个非常奇怪的例子,这就是为什么我建议使用一个仅匹配小写字母和大写字母的POSIX字符类[[:alpha:]],并添加一个匹配一个或多个出现的+。)

最新更新