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

Python使用正则匹配模式(\n2.1.2.2.2.)之前的目标文本实现方法

解决方法

要提取指定标记之前的内容不需要用反向查找,Python正则的反向查找要求匹配长度固定,更适合的方案是用正向前瞻断言匹配到标记位置截止,或者直接按标记分割文本后处理前半段。

完整可运行代码

import re

text1='\n \n \n \nInformation for Conformity of Production for OVC-HEV \n  \nCombined \nCO2 emission (g/km) MC02,CS,COP \n216.66 \nAFCO2,CS \n1.02 \n \n \n2.1.2.2.2. CO2 mass emission of OVC-HEVs in case of a charge-depleting Type 1 test \n \nTest 1 \n \nCO2 Mass Emission (g/km) \nCombined \nCalculated Value MCO2,CD \n17.27 \n'

# 用正向前瞻匹配到\n2.1.2.2.2.之前的、从Combined开始的内容
match_res = re.search(r'Combined[\s\S]*?(?=\n2\.1\.2\.2\.2\.)', text1)
if match_res:
    # 把所有换行、多余空白替换为单个空格
    output = ' '.join(match_res.group().split())
    print(output)

输出结果

Combined CO2 emission (g/km) MC02,CS,COP 216.66 AFCO2,CS 1.02

代码说明

  • 正则里的(?=\n2\.1\.2\.2\.2\.)是正向前瞻断言,只会匹配位置,不会把标记内容纳入匹配结果,实现「匹配到标记前截止」的效果
  • [\s\S]*?是惰性匹配任意字符(包括换行),避免多匹配到其他无关内容
  • ' '.join(xxx.split())可以一次性把所有换行、连续空格替换为单个空格,不需要单独处理换行符

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 04:30:01