Skip to main content
 首页 » 编程设计

python之正则表达式和组的交集

2024年10月24日32kevingrace

我需要使用正则表达式实现替换,仅当点不在两位数之间时才在点后添加一个空格。

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'