我需要使用正则表达式实现替换,仅当点不在两位数之间时才在点后添加一个空格。
a.a -> a. a
7.7 -> 7.7
为了实现它,我有几个规则,这里是其中之一:
text = (re.compile(u'(\D)(\.)(\D)')).sub('\\1\\2 \\3', text)
我希望在非数字符号之间的点之后替换添加空格,但对于输入
a.b.c.d.e
结果是
a. b.c. d.e
所以有些符号之间没有空格。看起来'a.b'首先匹配,然后'b'不作为'b.c.d'的一部分处理。是否可以修复此行为?
谢谢!
请您参考如下方法:
您的正则表达式与重叠字符串不匹配。您可以使用 lookaround基础正则表达式,以使其也与重叠的字符串匹配:
>>> regex = re.compile(u'(?<=\D)(\.)(?=\D)')
>>>
>>> regex.sub(r'\1 ', "a.b.c.d.e")
'a. b. c. d. e'
