我使用了一个简单的python正则表达式,如value="(.+?)"
来捕获我的xml数据中的值,只是为了实现输出有字符串&数字范围,扰乱了下游的数据处理。我只需要捕获数值。当有一个像" 19-20" 的范围时,我想只捕获19个。
示例数据:
value="19-20"
value="19.984"
value="slow"
value="19.99kg/m2"
value="107"
value="221lb"
这是我能得到的最接近的
我的部分工作regex1:
value="([0-9]{1,3})|([0-9]{1,3}\.[0-9]{1,2})"
我的部分工作regex2:
value="(.+?)(?:kg/m2|lb)?"
这就是我在输出中难以获得的东西
Match1: 19
Match2: 19.984
Match3: Null (or empty)
Match4: 19.99
Match5: 107
Match6: 221
答案 0 :(得分:0)
您可以使用此正则表达式:
\bvalue="(\d+(?:\.\d+)?)
并从捕获的组#1中获取值
(\d+(?:\.\d+)?)
匹配1个或更多个数字,后跟可选部分,即十进制和十进制数字。
答案 1 :(得分:0)
这似乎有效:
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)
答案 2 :(得分:0)