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

在R中匹配数据框目标列名的正则表达式求解

正则表达式修正:匹配指定列名并排除特定模式

需求概述

需要在R语言中用正则表达式从数据框列名里匹配包含Epithelium的字符串,同时排除包含Stroma的字符串。

待匹配字符串示例

tumor_stroma_epi_ovr_v4..Epithelium.area.µm.2
tumor_stroma_epi_colo_v3..Epithelium.area...m.2
tumor_stroma_epi_nsclc_v2..Epithelium.area.µm.2
tumor_stroma_epi_tnbc_v3..Epithelium.area.µm.2
tumor_stroma_epi_panc_v5..Epithelium.area.µm.2

需排除字符串示例

tumor_stroma_epi_ovr_v4..Stroma.area.µm.2
tumor_stroma_epi_colo_v3..Stroma.area...m.2
tumor_stroma_epi_nsclc_v2..Stroma.area.µm.2
tumor_stroma_epi_tnbc_v3..Stroma.area.µm.2
tumor_stroma_epi_panc_v5..Stroma.area.µm.2

原正则的问题分析

原正则^tumor_stroma_epi_[a-z]+_v[0-9]+\\.{2}Epithelium\\.area\\.?µm\\.2$存在以下限制:

  • 仅允许area后有0或1个点,无法匹配...m这种多个点的情况
  • 硬编码µm,无法覆盖µm或纯m的单位形式
  • 结尾匹配过于严格,没有兼容不同单位的变化

修正后的正则表达式

下面的正则可以覆盖所有待匹配场景,同时自动排除包含Stroma的字符串:

pattern <- "^tumor_stroma_epi_[a-z]+_v[0-9]+\\.{2}Epithelium\\.area.*(Â?µ|m)\\.2$"

正则说明

  • ^tumor_stroma_epi_[a-z]+_v[0-9]+\\.{2}:匹配统一的前缀部分,确保开头符合指定格式
  • Epithelium\\.area:明确匹配包含Epithelium的关键段,自然排除Stroma的字符串
  • .*:匹配area到单位之间的任意字符(包括多个点、特殊字符等)
  • (Â?µ|m):匹配三种单位情况:µ、µ、m
  • \\.2$:匹配结尾的.2,确保字符串结构完整

测试代码及结果

strings <- c(
  "tumor_stroma_epi_ovr_v4..Epithelium.area.µm.2",
  "tumor_stroma_epi_colo_v3..Epithelium.area...m.2",
  "tumor_stroma_epi_nsclc_v2..Epithelium.area.µm.2",
  "tumor_stroma_epi_tnbc_v3..Epithelium.area.µm.2",
  "tumor_stroma_epi_panc_v5..Epithelium.area.µm.2",
  "tumor_stroma_epi_ovr_v4..Stroma.area.µm.2",
  "tumor_stroma_epi_colo_v3..Stroma.area...m.2",
  "tumor_stroma_epi_nsclc_v2..Stroma.area.µm.2",
  "tumor_stroma_epi_tnbc_v3..Stroma.area.µm.2",
  "tumor_stroma_epi_panc_v5..Stroma.area.µm.2"
)

pattern <- "^tumor_stroma_epi_[a-z]+_v[0-9]+\\.{2}Epithelium\\.area.*(Â?µ|m)\\.2$"
matches <- grepl(pattern, strings)
print(matches)

执行后输出:

[1]  TRUE  TRUE  TRUE  TRUE  TRUE FALSE FALSE FALSE FALSE FALSE

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 05:14:51