我需要一个健壮的正则表达式,它将匹配所有字符直到浮动。我有一个字符串字典,字符串看起来像下面的模拟示例: '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
请注意,我们捕获领先的内容并浮动在单独的捕获组中,然后分别出现在结果列表中。
添加回答
举报
0/150
提交
取消