R语言使用str_extract提取省略号前后内容并剔除省略号的方法
R 省略号分隔字符串拆分方案
核心需求
将包含连续2个及以上省略号的字符串,拆分为省略号前后两个独立部分,拆分结果不保留省略号。
解决方案
方法1:直接用str_split拆分(最简洁)
直接以连续2个及以上的点作为分隔符拆分字符串,设置simplify = TRUE直接输出矩阵格式的两列结果:
# 示例字符串 a <- "60.4 (b)(33) and (e)(1) revised....................................46111" # 拆分 res <- str_split(a, "\\.{2,}", simplify = TRUE) # 提取前后部分 front_part <- res[,1] back_part <- res[,2]
运行后:
front_part结果为:"60.4 (b)(33) and (e)(1) revised"back_part结果为:"46111"
方法2:修改原str_extract正则(适配原有写法)
你之前的代码会保留省略号,是因为正则规则直接把连续点纳入了匹配范围,改用环视断言即可只匹配前后内容,不包含分隔用的点:
# 提取前半部分:匹配所有内容直到遇到连续2个及以上的点,不包含点 front_part <- str_extract(a, ".*?(?=\\.{2,})") # 提取后半部分:匹配连续2个及以上的点之后的所有内容,不包含点 back_part <- str_extract(a, "(?<=\\.{2,}).*")
内容的提问来源于stack exchange,提问作者byronious
相关产品推荐
相关产品推荐

