R语言如何使用gsub从向量中提取点号前后的独立字符串
原代码问题说明
你使用的gsub('.*:(.*)','\1',x)存在两个问题:
- R 中正则的反向引用需要写为
\\1,单反斜杠会被识别为转义字符无法正常生效 - 该正则会将冒号后的所有内容作为整体返回,不会拆分
Lord和后续的Have mercy on
实现方案
方案1:仅使用gsub分别提取两个目标字符串
x <- "Prayer: Lord. Have mercy on." # 提取 Lord lord_str <- gsub(".*: *([^.]*)\\..*", "\\1", x) # 提取 Have mercy on mercy_str <- gsub(".*\\. *([^.]*)\\.?$", "\\1", x)
运行后lord_str值为"Lord",mercy_str值为"Have mercy on"。
方案2:结合拆分函数实现(写法更简便)
如果不强制仅用gsub,可以用strsplit加清洗快速得到结果:
x <- "Prayer: Lord. Have mercy on." # 按冒号、句号拆分后过滤空值、去除首尾空格 parts <- trimws(Filter(nzchar, strsplit(x, ":|\\.")[[1]])) lord_str <- parts[2] mercy_str <- parts[3]
内容的提问来源于stack exchange,提问作者Julie
相关产品推荐
相关产品推荐

