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

时间:2011-07-10 06:02:01

标签: 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.'

我不太了解python文档中最左边的含义。据我所知,似乎re.sub(...)正在用pattern

替换 repl的所有次出现

2 个答案:

答案 0 :(得分:10)

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

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

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

>>> str = 'AABBBBAA'
>>> re.sub('BBB', 'CCC', str)
'AACCCBAA'

如您所见,BBB出现两次(重叠)事件。只更换最左边的那个。

答案 1 :(得分:5)

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

>>> import re
>>> re.sub('haha', 'Z', 'hahaha')
'Zha'

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