从 Python 3.6.8 升级到 Python 3.9.0,执行单元测试后,发现 re.split() 的行为发生了显着的变化,但是查看相关的文档(Changelog和re)却没有发现有什么变化。
这种变化可以用单元测试,较为精确的表示 :
number = '123'
def test_Asterisk_quantifier_with_capture_group(self):
resultList = re.split(r'(\d*)', self.number)
if platform.python_version() == '3.6.8':
self.assertEqual(resultList,['', '123', ''])
else:
self.assertEqual(resultList,['', '123', '', '', ''])
感觉这明显不符合 split 文档中对功能的描述,还有个奇怪的现象是将*换做+后,行为仍与 3.6.8 相同。
- 为什么这种变化没有在文档中出现?是我没有找到它吗?
- 为什么行为发生了这样的变化?是引入了 BUG,还是了修复 BUG ?