如何用Regex匹配小数点前无数字的十进制数并补前导零
匹配无前导数字的小数并添加前导零
要只捕获小数点前没有数字的小数(比如.5、.8这类),你需要用负向后瞻断言来排除前面有数字的情况,具体方案如下:
正确正则表达式
(?<!\d)\.(\d+)
替换规则
将匹配到的内容替换为 0.$1(其中$1对应捕获到的小数点后的数字部分)
示例代码(Python)
import re original_text = """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""" processed_text = re.sub(r'(?<!\d)\.(\d+)', r'0.\1', original_text) print(processed_text)
正则说明
(?<!\d):负向后瞻,确保小数点(\.)的前一个字符不是数字,完美排除了1.4、5.6这类前面带数字的小数\.:匹配小数点本身(\d+):捕获小数点后的所有数字,替换时用来保留原数字部分
为什么你之前的正则不行?
你写的(\d+)?\.(\d+)中,(\d+)?是可选的数字匹配,所以会同时匹配有数字和无数字的小数,无法区分出仅小数点前无数字的情况。
内容的提问来源于stack exchange,提问作者Animeartist
相关产品推荐
相关产品推荐

