为了账号安全,请及时绑定邮箱和手机立即绑定

强大的正则表达式匹配所有字符,直到一个浮点数

强大的正则表达式匹配所有字符,直到一个浮点数

弑天下 2022-06-07 16:47:44
我需要一个健壮的正则表达式,它将匹配所有字符直到浮动。我有一个字符串字典,字符串看起来像下面的模拟示例:    'some string 1 some more 2.1 even more 9.2 caracala,domitian2.3'...我需要一个健壮的正则表达式来仅在浮点数上对每个字符串进行子串化,因此最终结果将如下所示:{  'some string 1 some more': '2.1'  'even more': '9.2'  'caracala,domitian': '2.3'}我将使用带有 python re 的 for 循环来获得最终结果,但我需要一个健壮的正则表达式,它将匹配所有字符直到浮点数。我试过了:[-+]?\d*\.\d+|\d+但它也选择数字
查看完整描述

1 回答

?
慕容708150

TA贡献1831条经验 获得超4个赞

使用re.findall可能会得到你想要的结果:


inp = "some string 1 some more 2.1 even more 9.2 caracala,domitian2.3"

matches = re.findall(r'(.*?)\s*(\d+\.\d+)\s*', inp)

print(matches)


[('some string 1 some more', '2.1'), ('even more', '9.2'), ('caracala,domitian', '2.3')]

正则表达式的解释:


(.*?)       match all content up the first

\s*         optional space, which is followed by

(\d+\.\d+)  a floating point number

请注意,我们捕获领先的内容并浮动在单独的捕获组中,然后分别出现在结果列表中。


查看完整回答
反对 回复 2022-06-07
  • 1 回答
  • 0 关注
  • 129 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号