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

如何让正则表达式非贪婪匹配以提取EXPRESS行最后一项?

提取EXPRESS行最后一项的有效方法

针对你需要提取EXPRESS行最后一项adult的需求,当前使用的正则[|](.*?)\n会匹配第一个|到行尾的全部内容,这里提供几种精准解决的思路:

一、优化正则表达式

可以通过锚定行尾或限定匹配规则来精准捕获最后一项:

  • 匹配行内最后一个|之后的内容:
    \|([^|\n]+)$
    
    说明:\|匹配最后一个竖线,[^|\n]+只匹配竖线后到行尾的非竖线字符,$锚定行尾确保只取最后一段。
  • 先定位EXPRESS行再提取:
    EXPRESS.*\|([^|\n]+)$
    
    说明:先锁定以EXPRESS开头的目标行,再捕获该行最后一个|后的内容,避免误匹配其他行。

二、非正则拆分法(更直观易维护)

如果用代码处理,直接拆分字符串的方式更简单,以Python为例:

text = """EXPRESS      blood| muscle| testis| normal| tumor| fetus| adult
RESTR_EXPR   soft tissue/muscle tissue tumor"""

# 筛选出EXPRESS开头的行
express_line = next(line for line in text.split('\n') if line.startswith('EXPRESS'))
# 按|拆分后取最后一项,去除前后空格
last_item = express_line.split('|')[-1].strip()
print(last_item)  # 输出:adult

这种方法不需要复杂正则,可读性更强,且不容易出现匹配异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 02:30:44