使用R语言gsub移除最后一个/前内容失败,求正确正则写法
问题解决方法
你的gsub代码没生效,问题出在正则表达式的写法上:
- 原正则
^[[:alnum:]]{1,}////里,[[:alnum:]]只能匹配字母数字,没法覆盖字符串中带斜杠的部分,所以只能匹配到第一个/前的CSF0495;而后面的////实际是匹配两个/,和原字符串的结构不匹配,自然找不到可替换的内容。
要提取最后一个/后的年份,有两种简单的实现方式:
方法一:用gsub替换掉最后一个/之前的所有内容
直接用贪婪匹配匹配开头到最后一个/的所有字符,替换为空:
temp <- "'CSF0495/DE/wb/1997'" date <- gsub("^.*\\/", "", temp) # 若要去掉首尾的单引号,可再加一步: date <- gsub("^'|'$", "", date)
方法二:直接提取末尾的数字年份
如果确定年份是字符串末尾的数字,用stringr包的str_extract更直观:
library(stringr) temp <- "'CSF0495/DE/wb/1997'" date <- str_extract(temp, "\\d+$")
内容的提问来源于stack exchange,提问作者sk1542
相关产品推荐
相关产品推荐

