当前位置:  开发笔记 > 编程语言 > 正文

gsub没有替换R中的所有预期匹配

如何解决《gsub没有替换R中的所有预期匹配》经验,为你挑选了1个好方法。

假设我有字符串x <- "AbC",我想在每个字母之间添加一个&符号.我本以为我可以这么做gsub("([a-zA-Z])([a-zA-Z])", "\\1 & \\2", x),但那会产生"A&bC".为什么不gsub识别与正则表达式匹配的第二组字母?这gsub不仅仅是取代找到的第一场比赛.如果我有x <- "AbC DE"并运行相同的命令,我会得到"A&bC D&E".

关于如何gsub更换它,我错过了什么?我希望从上面的两个输入中得到"A&b&C"和"A&b&CD&E"的输出.



1> Avinash Raj..:

因为如果一个字符存在于一个匹配中,则正则表达式引擎将不再匹配相同的字符.也就是说,它不会重叠匹配.使用环视来克服这个问题..

gsub("([a-zA-Z])(?=[a-zA-Z])", "\\1 & ", x, perl=T)

DEMO

推荐阅读
云聪京初瑞子_617
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有