繁体   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