我尝试使用正则表达式匹配字符串中小数点前没有数字的十进制数字。例如,我有以下字符串:
The dimensions of the object-1 is: 1.4 meters wide, .5 meters long, 5.6 meters high
The dimensions of the object-2 is: .8 meters wide, .11 meters long, 0.6 meters high
我只想捕获不带整数位的十进制数,并在它们前面加上前缀零,所以我最终想要的输出将是:
The dimensions of the object-1 is: 1.4 meters wide, 0.5 meters long, 5.6 meters high
The dimensions of the object-2 is: 0.8 meters wide, 0.11 meters long, 0.6 meters high
这是我迄今为止所尝试的:
(\d+)?\.(\d+)
此表达式捕获所有十进制数,例如:1.4, .5, 5.6, .8, .11, 0.6
.
但我只需要捕获不含整数位的十进制数:.5, .8, .11
.
3条答案
按热度按时间q9yhzks01#
使用负向后查找:
(?<!\d)(\.\d+)
nx7onnlm2#
你可以做一个正则表达式替换与负查找一个数字。
正则表达式-
(?<!\d)(\.\d+)
(?<!\d)
-检查正则表达式前面没有数字(\.\d+)
-捕获点和一个或多个连续数字替代-
0\1
0
-为捕获添加一个零\1
-对捕获组的反向引用,该捕获组是以点开始的浮点数Regex101 Demo for python regex flavour
Python代码示例
5jdjgkvh3#
按照你的意图做似乎很奇怪。为什么不捕获所有的浮点数并格式化它们呢?
re.sub
将接受一个函数作为repl
参数。该函数应该接受一个match
作为其参数,并返回一个str
。你可以使用这种方法来格式化所有的浮点数。