簡體   English   中英

gsub沒有替換R中的所有預期匹配

[英]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)

DEMO

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM