Python regex只捕获第一次出现的数值匹配

2024-06-07 07:58:31 发布

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

我使用了一个简单的python regex,比如value="(.+?)"来捕捉xml数据中的值,结果却发现输出有字符串和数字范围,这会扰乱下游的数据处理。我只需要捕捉数值。当有一个范围,比如说“19-20”时,我只想捕获19个。在

样本数据:

value="19-20"
value="19.984"
value="slow"
value="19.99kg/m2"
value="107"
value="221lb"

这是我所能接近的

我的部分工作regex1:

^{pr2}$

我的部分工作regex2:

value="(.+?)(?:kg/m2|lb)?"

这就是我在努力得到的输出

Match1: 19
Match2: 19.984
Match3: Null (or empty)
Match4: 19.99
Match5: 107
Match6: 221

Tags: 数据字符串value数字xmlregex数据处理数值
3条回答

这似乎有效:

import re

tests = ['value="19-20"',
'value="19.984"',
'value="slow"',
'value="19.99kg/m2"',
'value="107"',
'value="221lb"']


for txt in tests:
    print re.findall(r'value="([\d][\d\.]*)', txt)

预期每个OP 6匹配,Match3=Null
使用此模式

^value="((?:\d+(?:\.\d+)?)?)

Demo

您可以使用以下正则表达式:

\bvalue="(\d+(?:\.\d+)?)

从捕获的组1中获取价值

(\d+(?:\.\d+)?)匹配1个或多个数字,后跟可选部分,即十进制和小数后的数字。在

RegEx Demo

Code Demo

相关问题 更多 >

    热门问题