You need to enable JavaScript to run this app. Pandas中使用str.extract实现START到多终止词内容提取的正则问题
优惠活动
大模型
产品
解决方案
定价
更多

Pandas中使用str.extract实现START到多终止词内容提取的正则问题

正则调整方案

你只需要把原来的单个终止词替换为非捕获可选组即可,调整后的正则如下:

(?s)START(.*?)(?:STOP\s+WORD|ANOTHER\s+DELIMITER)

正则说明

  • 保留了你原有的(?s)单行模式,支持跨行匹配内容
  • (?:STOP\s+WORD|ANOTHER\s+DELIMITER)是核心修改部分:
    • ?:表示这是个非捕获组,不会被str.extract作为单独结果返回,避免生成多余列
    • |是正则或逻辑,会匹配两个终止词中先出现的那个
  • 中间的.*?惰性匹配保证只会取到第一个终止词之前的内容,符合你要的首个匹配要求

Pandas 调用示例

import pandas as pd

# 构造测试数据
df = pd.DataFrame({
    "content": [
        "START hello there STOP WORD",
        "START Good morning ANOTHER DELIMITER",
        "START 跨行测试\n换行内容 STOP WORD"
    ]
})

# 提取目标内容,自动去首尾空格(可选操作,按需保留)
df["extract_result"] = df["content"].str.extract(r"(?s)START(.*?)(?:STOP\s+WORD|ANOTHER\s+DELIMITER)").apply(lambda x: x.str.strip())

运行后你给的两个示例会分别返回hello there和Good morning,完全符合预期。如果后续需要新增更多终止词,直接在非捕获组内用|追加即可。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.11 14:24:04