Python 正则表达式与群的交集
我需要使用regexps实现一个替换,仅当点不在两位数之间时,才在点后添加空格Python 正则表达式与群的交集,python,regex,Python,Regex,我需要使用regexps实现一个替换,仅当点不在两位数之间时,才在点后添加空格 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”的
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”的一部分处理。有可能纠正这种行为吗
谢谢 您的正则表达式与重叠字符串不匹配。可以使用基本正则表达式使其与重叠字符串匹配:
>>> regex = re.compile(u'(?<=\D)(\.)(?=\D)')
>>>
>>> regex.sub(r'\1 ', "a.b.c.d.e")
'a. b. c. d. e'
>regex=re.compile(u'(?您可以使用lookahead/lookahead断言对hello world应该发生什么。
?您具体指的是一个句点,还是两个非数字字符之间的句点?但有一个问题。如果您只想排除数字点位
,那么您的正则表达式将与数字点位
或非数字点位不匹配de>。我确信如果你包括所有规则,你会得到一个更好的正则表达式解决方案。我不明白,OP字面上说这是预期结果a.b.c.d.e
,而不是这个a.b.c.d.e
@Shafizadeh,这是他们不想要的输出,也就是他们目前得到的。@padraiccnningham哦..我看到了.Thx。