Python 健壮的正则表达式匹配所有字符,直到一个浮点数
我需要一个健壮的正则表达式,它将匹配所有字符直到一个浮点 我有一个字符串的dict,字符串看起来像下面的模拟示例:Python 健壮的正则表达式匹配所有字符,直到一个浮点数,python,regex,python-3.x,python-2.7,Python,Regex,Python 3.x,Python 2.7,我需要一个健壮的正则表达式,它将匹配所有字符直到一个浮点 我有一个字符串的dict,字符串看起来像下面的模拟示例: '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,domi
'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+
但它也使用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
请注意,我们捕获了主要内容,并在单独的捕获组中浮动,然后这些捕获组分别出现在结果列表中。使用
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
请注意,我们捕获了领先的内容,并将其分为不同的捕获组,然后分别显示在结果列表中。我不是被否决的人,但到目前为止您尝试了什么?有一个很好的网站,可能重复我不是被否决的人,但是到目前为止你都做了些什么呢?有一个很好的网站,很可能是重复的