[英]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
字符串(包含需要保留的点)以外的所有内容。 我真的只是想删除附加到每个变量末尾的缓冲区大小,例如1000m
, 2500m
, 5000m
, 7500m
和10000m
。
gsub("\\..*m$", "", strings)
"x", "pm2", "rmin", "rmin", "rmax"
匹配点,任意数字, m
和字符串的末尾,并将其替换为空字符串。 请注意,我们宁愿sub
给gsub
,因为我们只是在每串一个替代兴趣在这里。
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.