You need to enable JavaScript to run this app. 求适配R strcapture的Regex捕获组提取File与ID字段的正则方案
优惠活动
大模型
产品
解决方案
定价
更多

求适配R strcapture的Regex捕获组提取File与ID字段的正则方案

R语言strcapture函数提取文件名字段的正则实现

核心疑问解答

不需要为两类文件名单独编写正则模式,依托文件名中固定的结构锚点,通过可选匹配兼容命名差异,单一正则即可同时覆盖纯数字命名、带空格文本命名两类场景的提取需求。

正则设计逻辑

所有待处理文件名具备两类命名变体,核心存在固定的结构锚点,无需拆分两套匹配规则:

  • 开头固定为「序号. 空格」格式:作为File字段的起始匹配边界
  • File字段的终止边界存在两类固定场景:
    • 纯数字命名的File(如4301):后面紧跟 TMA_Scan1_Core[ 标记
    • 带空格的文本命名File(如TMA A):后面紧跟_Scan1_Core[ 标记
    • 通过可选非捕获组兼容这个差异,即可准确框定File字段的结束位置,不会多抓取冗余内容
  • 方括号内的Core信息具备固定格式 [固定值,变化数字,变化大写字母]:只需跳过开头的固定值部分,捕获后续带逗号的数字+字母组合,后续去逗号即可得到符合要求的ID值

可直接使用的正则表达式

适配R语言strcapture函数的转义规则,最终pattern为:

"^\\d+\\.\\s+(.*?)(?: TMA)?_Scan1_Core\\[\\d+,\\s*(\\d+,[A-Z])\\]"

各部分匹配含义:

  • ^\\d+\\.\\s+:匹配开头的序号段(如1. 、3. ),不做捕获
  • (.*?):第一个非贪婪捕获组,匹配从序号段结束到对应结构标记之前的所有内容,对应File字段
  • (?: TMA)?:可选非捕获组,兼容纯数字文件名中File字段后面附带的“空格+TMA”段,不做捕获
  • _Scan1_Core\\[\\d+,\\s*:匹配Core段的固定结构,跳过方括号内第一个固定的数值(如所有文件名里开头的1,),不做捕获
  • (\\d+,[A-Z]):第二个捕获组,匹配方括号内剩余的「数字,大写字母」组合(如1,A、6,B),作为ID字段的原始提取内容

完整运行代码

# 提取字段,得到带逗号的原始ID
out <- strcapture(
  pattern = "^\\d+\\.\\s+(.*?)(?: TMA)?_Scan1_Core\\[\\d+,\\s*(\\d+,[A-Z])\\]",
  x = test$Image,
  proto = list(File = "", ID = "")
)

# 移除ID字段中的逗号,得到最终格式
out$ID <- gsub(",", "", out$ID)

运行结果验证

上述代码处理给定测试数据集后,输出结果与预期完全一致:

FileID
43011A
43026B
TMA A1A
TMA B9E

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.31 20:06:05