簡體   English   中英

使用gsub替換R中最后一次出現的字符串

[英]Using gsub to replace last occurence of string in R

我具有以下字符向量,而不需要使用gsub進行修改。

strings <- c("x", "pm2.5.median", "rmin.10000m", "rmin.2500m", "rmax.5000m")

所需的過濾strings輸出:

"x", "pm2.5.median", "rmin", "rmin", "rmax"

我當前的嘗試適用於除pm2.5.median字符串(包含需要保留的點)以外的所有內容。 我真的只是想刪除附加到每個變量末尾的緩沖區大小,例如1000m2500m5000m7500m10000m

gsub("\\..*m$", "", strings)
"x", "pm2", "rmin", "rmin", "rmax"

匹配點,任意數字, m和字符串的末尾,並將其替換為空字符串。 請注意,我們寧願subgsub ,因為我們只是在每串一個替代興趣在這里。

sub("\\.\\d+m$", "", strings)
## [1] "x"            "pm2.5.median" "rmin"         "rmin"         "rmax"   

.*模式匹配盡可能多的0個或更多字符。 \\..*m$模式與第一個(最左側)匹配. 在字符串中,然后截取所有以m結尾的文本。

你需要

> sub("\\.[^.]*m$", "", strings)
[1] "x"            "pm2.5.median" "rmin"         "rmin"         "rmax" 

在這里, \\.[^.]*m$匹配. ,然后是0個或多個除點號以外的字符,然后在字符串的末尾加上m

參見regex演示

細節

  • \\. -點(必須轉義,因為它是特殊的正則表達式字符)
  • [^.]* -匹配除char以外的任何字符的否定字符類. 0次以上
  • m一個m char
  • $ -字符串結尾。

暫無
暫無

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

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