如何使用regex.sub
将任何字符串替换为具有数字的字符串,如果有则仅替换一个点(。)。
示例:
string = "aa122..2a" # "122.2"
string = "aa122a3a" # "1223"
我尝试了
re.sub(r'[^\d\.{0,1}]', '', string)
但是{0,1}
无效。
答案 0 :(得分:2)
您要删除除第一个数字外的所有非数字和所有点,因此正则表达式应为
import regex
regex.sub(r"([^\d.]|(?<=\..*)\.)", "", string)
第一部分与任何不是数字或点的字符匹配。第二部分与前面有另一个点的任何点匹配,因此仅保留第一个点。
由于使用了可变长度的回溯,因此库存re
模块不起作用。您需要regex
on PyPI才能使用此功能。
测试:
>>> regex.sub(r"([^\d.]|(?<=\..*)\.)", "", "aa122.3.4.5a")
'122.345'