+
和
*
:::
Python 3.10.16 (main, Dec 7 2024, 13:31:33) [Clang 16.0.0 (clang-1600.0.26.6)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import re
>>> re.sub('(.{4,5})+', '-', '1234123412341234')
'-4'
>>> re.sub('(.{4,5})*', '-', '1234123412341234')
'--4-'
>>>
我能够在PHP中复制它,大概是因为它们都在背后使用PCRE:
$ php -a
Interactive shell
php > echo preg_replace('/(.{4,5})+/', '-', '1234123412341234');
-4
php > echo preg_replace('/(.{4,5})*/', '-', '1234123412341234');
--4-
php >
如何来?
pypython不使用pcre,所以不是。
('/(.{4,5})+/'
('/(.{4,5})*/'
以相同的方式匹配前15个字符。但是后来又留下了一个尾随的“ 4”。和空字符串does匹配,因为
*
表示0或更多匹配和0个计数。因此,您将获得第二个“ - ”。尾随的“ 4”本身不匹配,所以它是一个人。然后在尾随的“ 4”匹配后(再次0次)之后的空字符串,因此您将获得最终的“ _”。