在字符串中,如何更改任何' e?这是一个' o的权利。到了'?
我第一次尝试这个,但只做了一次改变:
x <- c('keonele','keontele');
gsub('o.*\\Ke','a',x,perl=T);
[1] "keonela" "keontela"
然后,我通过相同的命令两次运行输入,得到了正确的结果:
x <- c('keonele','keontele');
x <- gsub('o.*\\Ke','a',x,perl=T);
x <- gsub('o.*\\Ke','a',x,perl=T);
[1] "keonala" "keontala"
如何使用一个命令详尽地进行此类更改?
答案 0 :(得分:3)
您需要使用否定前瞻
> x <- c('keonele','keontele')
> gsub("e(?!o)", "a", x, perl=TRUE)
[1] "keonala" "keontala"
它替换了e
后面没有紧跟o
字母a
的所有> gsub("^.*o(*SKIP)(*F)|e", "a", x, perl=TRUE)
[1] "keonala" "keontala"
。
或强>
^.*?o
o
匹配从开始到最后(*SKIP)(*F)
的所有字符。 e
使匹配失败,现在OR运算符旁边的模式将尝试匹配剩余字符串中的字符。因此,模式e
将与之后o
之后的所有e
匹配。用a
替换{{1}}将为您提供所需的输出。