You need to enable JavaScript to run this app. Python中如何从结构化文本中提取包含指定词string1的完整句子
优惠活动
大模型
产品
解决方案
定价
更多

Python中如何从结构化文本中提取包含指定词string1的完整句子

问题原因

你之前使用的正则存在核心错误:原始文本中并未使用英文句号.作为记录分隔符,[^.]无法正确识别完整记录的前后边界,只会匹配非句号字符,因此丢失了目标记录开头的HEAD前缀内容。

解决方案

你的所有完整记录均以HEAD作为起始标记,因此可以使用否定式正向预查限制匹配范围不会跨到下一条记录,正则表达式如下:

HEAD(?:(?!HEAD).)*string1(?:(?!HEAD).)*

规则说明

  • HEAD:定位完整记录的起始位置
  • (?:(?!HEAD).)*:匹配任意单个字符,仅当该字符的后续位置不是HEAD时才继续匹配,确保不会读取到下一条记录的内容
  • string1:匹配你指定的目标关键词
  • 后半段(?:(?!HEAD).)*:继续匹配关键词之后的剩余内容,直到遇到下一条记录的起始标记HEAD或文本结束

调用示例(Python)

import re

# 原始文本
raw_text = "HEAD,Content,11005,{A:1,json:{B:0,C:5,D:-1,E:false,F:Failure},suffix:_A}DC0DHEAD,Content,11005,{A:1,json:{BC:true,DE:2,FG:0,HI:0,JK:0,string1:Error},suffix:_A}D646HEAD,Content,11005,{A:1,json:{Z:{Y:false,X:0,Q:1},suffix:}3AA8"
# 匹配规则
pattern = r"HEAD(?:(?!HEAD).)*string1(?:(?!HEAD).)*"
# 执行匹配
match_result = re.search(pattern, raw_text)
if match_result:
    print(match_result.group())

输出结果

HEAD,Content,11005,{A:1,json:{BC:true,DE:2,FG:0,HI:0,JK:0,string1:Error},suffix:_A}D646

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.11 05:39:03