1

这里也问了一个类似的问题:

正则表达式匹配带有“点”的单词有界实例?

但在我看来,我的问题没有得到回答。

我想查找由数字、点和可选数字组成的单词边界之间的数字(在 Python 中):

import re    
search_in = '55.1 55. 55.12'
reg_str = r'\d+\.\d*\b'
lst = re.findall(reg_str, search_in)
print(lst) # ['55.1', '55.12']
# expected: ['55.1', '55.', '55.12']

如果点在单词的末尾,则不匹配。我也无法找出原因,也没有找到解决方案。有人可以帮忙吗?

4

2 回答 2

0

只需在您的正则表达式中删除\b(单词边界)

import re
search_in = '55.1 55. 55.12'
reg_str = r'\d+\.\d*'
lst = re.findall(reg_str, search_in)
print(lst)

split()或者如果你想在空格之间分隔,你可以使用函数

search_in = '55.1 55. 55.12'
print(search_in.split(" "))

输出
['55.1', '55.', '55.12']

于 2021-12-20T19:11:59.130 回答
0

锚点代表单词边界,这\b意味着它将针对以单词而不是数字为界的组,因此不会捕获中间数字,因为下一个模式是数字。正确的正则表达式解决方案是\b\d+\.\d*.

于 2021-12-20T19:15:47.540 回答