re.sub(...)替换最左边的事件?

Vai*_*pai 6 python regex

$ pydoc re.sub :

sub(pattern, repl, string, count=0, flags=0)
    Return the string obtained by replacing the leftmost
    non-overlapping occurrences of the pattern in string by the
    replacement repl.

>>> re.sub('ROAD', 'RD.', 'BRRROADBBRROAD ROAD ROAD MY ROAD')
'BRRRD.BBRRD. RD. RD. MY RD.'
Run Code Online (Sandbox Code Playgroud)

我不太了解python文档中leftmost的含义.据我所看到的,似乎re.sub(...)正在取代所有出现的patternrepl

Eli*_*sky 11

注意's'结束最左边的非重叠事件.

re.sub替换所有出现的事件.您可以使用可选的count参数来限制它所执行的替换.

"最左边不重叠"意味着如果多次出现重叠且可能被替换,则只有最左边的将:

>>> str = 'AABBBBAA'
>>> re.sub('BBB', 'CCC', str)
'AACCCBAA'
Run Code Online (Sandbox Code Playgroud)

如您所见,此处出现两次(重叠)事件BBB.只更换最左边的.


Ray*_*oal 5

您可以在此示例中查看最左侧的含义

>>> import re
>>> re.sub('haha', 'Z', 'hahaha')
'Zha'
Run Code Online (Sandbox Code Playgroud)

请注意,我们没有看到"haZ"本来是最右边的替代品.