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

我需要一个健壮的正则表达式,它将匹配所有字符直到浮动。


我有一个字符串字典,字符串看起来像下面的模拟示例:


    '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+但它也选择数字


弑天下
浏览 130回答 1
1回答

慕容708150

使用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请注意,我们捕获领先的内容并浮动在单独的捕获组中,然后分别出现在结果列表中。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python