簡體   English   中英

第一次出現后替換字符串中的元素

[英]Replace element in string after first occurrence

我要替換所有2的字符串中的第一次出現之后2 ,最理想的是采用regex中基R 似乎必須是重復的,但我找不到答案。

這是一個例子:

my.data <- read.table(text='
                         my.string
                         .1.222.2.2
                         ..1..1..2.
                         1.1.2.2...
                         .222.232..
                         ..1..1....
', header=TRUE, stringsAsFactors = FALSE)
my.data

desired.result <- read.table(text='
                         my.string
                         .1.2......
                         ..1..1..2.
                         1.1.2.....
                         .2....3...
                         ..1..1....
', header=TRUE, stringsAsFactors = FALSE)
desired.result

my.last.2 <- c(4, 9, 5, 2, NA)
my.last.2

感謝您的協助。

這似乎與您所需的輸出匹配:

> gsub(pattern = "(?<=2)(.*?)2",
       replacement = "\\1\\.",
       x = my.data$my.string,
       perl = TRUE)
[1] ".1.2......" "..1..1..2." "1.1.2....." ".2....3..." "..1..1...."

從字面上看,這實際上是對該答案的直接修改,以使其非常類似於R。 老實說,我不太了解此正則表達式,因此請謹慎使用(並贊成)。

這可行,但效率可能很低:

with(my.data, gsub("@", "2", gsub("2", ".", sub("2", "@", my.string))))
# [1] ".1.2......" "..1..1..2." "1.1.2....." ".2....3..." "..1..1...."

方法:使用sub僅匹配第一個匹配項,並將其更改為@ (或my.string其他地方未顯示的其他占位符,然后使用gsub替換所有剩余的2 s,然后使用gsub @返回2

暫無
暫無

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

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