需求:一次匹配,匹配薪水 low 和 high
字段例子:
在正则表达式在线上( https://c.runoob.com/front-end/854 ) 用这个\d+(\.\d+)?
能测试通过
但是使用python re.findall(pattern, str)
得到结果却不尽如人意
例如:0.7-1 万 /元;我想要得到[0.7, 1]
s = "0.7-1 万 /元"
p = "\d+(\.\d+)?"
print(re.findall(p, s))
# 得到[0, 7, 1]
求助各位大伙,有无 python 一次匹配可以得到的方法,谢谢啦
1
Mitt 2021-03-16 19:33:04 +08:00 1
([0-9\.]+)(?:-([0-9\.]+))?
|
2
pakro888 2021-03-16 19:39:54 +08:00 1
|
3
chizuo OP |
4
zyb201314 2021-03-16 21:24:30 +08:00 via Android 2
这里(?:exp)没有必要吧?
还有例子字符串中除了 float 中有'点', 没有其它单独的'点'.那么直接获取数字和点就 ok 了.如: s="0.7-1 万 /元;" print(re.findall("[\d\.]+" , s)) |
5
chizuo OP @zyb201314 优秀,你这个是最简洁的,但是我还是用我那个,更严格一些,你懂得,你永远也不知道未知的数据长啥样 hhh
|
6
HelloViper 2021-03-17 10:26:21 +08:00
贪婪匹配啊,"[0-9.]{1,}"
|