Python正则表达式在模式匹配之前查找单词

2024-06-26 05:56:31 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一根绳子

text1="Information 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"

我想使用regex进入模式(\n2.1.2.2.2.)之前的单词

预期产出:

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

我编写了一个正则表达式字符串,用于搜索2.1.2.2.2之后的单词 但在反向搜索时不确定

这就是我试过的

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'

m8A = re.search(r'\b(2.1.2.2.2. CO2 mass emission of OVC-HEVs).*((?:\n.*){7})', text1)

d8A = {}

if m8A:

    d8A[m8A.group(1).strip()] = m8A.group(2).replace('\n', '').strip()

print(d8A)

Tags: offorcsmassco2copkmemission
1条回答
网友
1楼 · 发布于 2024-06-26 05:56:31

我建议使用

(?m)^(\S.*(?:\n\S.*)*)(?:\n[ \t]*){2,}2\.1\.2\.2\.2\.

regex demo详细信息

  • (?m)-多行模式
  • ^-行的开始
  • (\S.*(?:\n\S.*)*)-第1组:一个非空白字符,然后是零个或多个除换行符以外的字符(尽可能多),然后是零个或多个换行符+一个非空白字符+行的其余部分
  • (?:\n[ \t]*){2,}-两个或多个连续序列:换行符、零个或多个空格或制表符
  • 2\.1\.2\.2\.2\.-一个2.1.2.2.2.字符串

Python demo

import re
text1="Information 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"
rx = r"(?m)^(\S.*(?:\n\S.*)*)(?:\n[ \t]*){2,}2\.1\.2\.2\.2\."
m = re.search(rx, text1)
if m:
    print( m.group(1).strip() )

输出:

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

相关问题 更多 >