[英]gsub not replacing all expected matches in R
假設我有字符串x <- "AbC"
,我想在每個字母之間添加一個&符號。 我本以為我可以做gsub("([a-zA-Z])([a-zA-Z])", "\\\\1 & \\\\2", x)
,但這會產生“A&公元前”。 為什么gsub
不識別與正則表達式匹配的第二組字母? 它不像gsub
只替換找到的第一個匹配。 如果我有x <- "AbC DE"
並運行相同的命令,我會得到“A&bC D&E”。
關於gsub
如何替代它,我缺少什么? 我希望從上面的兩個輸入中得到“A&b&C”和“A&b&CD&E”的輸出。
因為如果一個字符存在於一個匹配中,則正則表達式引擎將不再匹配相同的字符。 也就是說,它不會重疊匹配。使用環視來克服這個問題..
gsub("([a-zA-Z])(?=[a-zA-Z])", "\\1 & ", x, perl=T)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.