【发布时间】:2019-01-04 21:02:27
【问题描述】:
我正在尝试正则表达式用单个字母替换 n 次出现的字母。应该足够简单,如I know regular expressions。 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+' 作为模式可以部分解决该问题,但显然不适用于 0 长度匹配。
【问题讨论】:
-
我无法在 Python 3 中重现您的结果。我分别得到
'y'和'yzyzy'。 -
@Tomothy32 我确实在 Linux 上的 3.7.2 中重现了它,你使用的是什么版本的 python3?
-
我无法在 Python 3.4.5 中重现。
-
找到了一台使用 Python 3.5.3 的机器,按预期工作类似于 v2.7
-
@eyllanesc 没关系,刚刚意识到我使用的是 3.6.7 解释器。
标签: python regex python-3.x python-2.7