python正则表达式基于条件获取匹配

2024-09-27 04:28:13 发布

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

我有下面的文本字符串

text = "\n1.2.2. ROAD LOAD PARAMETERS \nf0 \n227.4 \nf1 (N/(km/h)) \n0.149"

我正在尝试编写一个正则表达式匹配模式,以获取紧跟'1.2.2. ROAD LOAD PARAMETERS'的值(连续2个值)

预期产出:

1.2.2. ROAD LOAD PARAMETERS : f0 227.4 # (only 2 values after the match)

尝试了以下正则表达式:

ec = re.search(r'(1.2.2. ROAD LOAD PARAMETERS)\s*(.+)', text)

ec.groups()

这给了我以下信息

('1.2.2. ROAD LOAD PARAMETERS', 'f0 ')

Tags: 字符串text文本only模式loadparametersvalues
3条回答

您可以使用str.split()方法:

import re

text = "\n1.2.2. ROAD LOAD PARAMETERS \nf0 \n227.4 \nf1 (N/(km/h)) \n0.149"

i = "1.2.2. ROAD LOAD PARAMETERS"

val1, val2 = text[text.index(i) + len(i):].split()[:2]
print(i, ":", val1, val2)

输出:

1.2.2. ROAD LOAD PARAMETERS : f0 227.4

若要匹配两个数字,需要两个\s*(.+)。 使用

ec = re.search(r'(1.2.2. ROAD LOAD PARAMETERS)\s*(.+)\s*(.)', text)

给你

('1.2.2. ROAD LOAD PARAMETERS', 'f0 ', '227.4 ')

如果1.2.2. ROAD LOAD PARAMETERS始终是固定的,则可以使用以下方法:

ec = re.search(r'(1.2.2. ROAD LOAD PARAMETERS)\s+(\w+)\s+([\w\.]+)', text)

在第一种情况下,我将.+替换为\w+,以防止空间匹配,在第二种情况下,我还使用了[\w\.]+,因为您有字母数字加上.

相关问题 更多 >

    热门问题