You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

正则表达式需求:移除字符串中日期区间后的所有文本

移除日期区间后文本的正则解决方案

问题分析

你当前使用的正则表达式固定了日期间连字符的前后空格(\\-),但实际场景中日期区间的连字符可能前后无空格,导致匹配失效,无法正确移除后续文本。

修正后的正则表达式

针对R语言的gsub函数,可使用以下正则表达式:

gsub("((?:\\d{2}[A-Za-z]{3}\\d{2})\\s*-\\s*(?:\\d{2}[A-Za-z]{3}\\d{2})).*", "\\1", x)

效果验证

  • 示例1(日期间连字符带空格):
    输入:x = "AB - CEPC - Telephone_BAU_CPM_Link - 20Jan22 - 30Jan22 - Video Package - XXXX - Optimize"
    输出:AB - CEPC - Telephone_BAU_CPM_Link - 20Jan22 - 30Jan22

  • 示例2(日期间连字符无空格):
    输入:x = "AB - CEPC - Telephone_BAU_CPM_Link - 20Jan22-30Jan22 - Video Package - XXXX - Optimize"
    输出:AB - CEPC - Telephone_BAU_CPM_Link - 20Jan22-30Jan22

正则说明

  • (?:\\d{2}[A-Za-z]{3}\\d{2}):非捕获组,匹配DDMonYY格式的日期(如20Jan22),其中\\d{2}匹配两位数字,[A-Za-z]{3}匹配月份缩写,\\d{2}匹配两位年份。
  • \\s*-\\s*:匹配连字符,\\s*允许连字符前后有任意数量的空格(包括0个),兼容带空格和无空格的场景。
  • ((?:...)\\s*-\\s*(?:...)):捕获整个日期区间,替换时用\\1保留该区间内容。
  • .*:匹配日期区间之后的所有文本,替换时将这部分内容移除。

内容的提问来源于stack exchange,提问作者Sankalp Srivastava

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 19:35:37