如何使用gsub从变量summed_EU_Sales中提取EU?
提取变量名中的EU部分
你的问题在于当前正则仅匹配并移除了开头的summed_,未处理结尾的_Sales部分。可以通过调整正则表达式,同时匹配前后固定前缀后缀,捕获中间需要的EU内容:
方法1:用gsub捕获中间内容
gsub("^summed_(.*)_Sales$", "\\1", summed_EU_Sales)
^summed_:匹配字符串开头的固定前缀summed_(.*):捕获中间任意长度的目标内容(即EU)_Sales$:匹配字符串结尾的固定后缀_Sales\\1:将整个字符串替换为第一个捕获组的内容,也就是中间的EU
方法2:用stringr包的str_extract(更直观)
如果习惯使用stringr包,也可以通过正向/反向预查直接提取目标:
library(stringr) str_extract(summed_EU_Sales, "(?<=summed_).*(?=_Sales)")
(?<=summed_):反向预查,确保目标内容前是summed_但不将其纳入结果(?=_Sales):正向预查,确保目标内容后是_Sales但不将其纳入结果- 中间的
.*就是需要提取的EU部分
内容的提问来源于stack exchange,提问作者lazlomeli
相关产品推荐
相关产品推荐

