1

我正在尝试正则表达式用单个字母替换出现的 n 个字母。应该足够简单,因为我知道正则表达式。Python 2.7.15 按预期工作:

>>> re.sub('x*', 'y', 'xxxxx')
'y'
>>> re.sub('x*', 'y', 'zxxxxxz')
'yzyzy'

但是 Python 3.7.2rc1 给了我:

>>> re.sub('x*', 'y', 'xxxxx')
'yy'
>>> re.sub('x*', 'y', 'zxxxxxz')
'yzyyzy'

使用'x+'as 模式可以部分解决该问题,但显然不适用于 0 长度匹配。

4

1 回答 1

1

这看起来像是 python 3.7 中的有意更改。从文档中

当与先前的非空匹配相邻时,模式的空匹配将被替换。

使用该术语,我发现这篇文章详细说明了如何恢复旧功能。

于 2019-01-04T21:10:25.407 回答