str.partition
具有以下功能,通常对解析字符串非常有用。我想要相同的功能,但扩展到python re.compile(...)
对象。
>>> 'foo bar baz'.partition('bar')
('foo ', 'bar', ' baz')
>>> 'foo bar bar baz'.partition('bar')
('foo ', 'bar', ' bar baz')
>>> 'foo bar baz'.partition('hi')
('foo bar baz', '', '')
答案 0 :(得分:0)
这是我的解决方案,加上奖励rpartition
:
def re_partition(regex, s):
match = regex.search(s)
if match:
return s[:match.start()], s[slice(*match.span())], s[match.end():]
else:
return (s, '', '')
def re_rpartition(regex, s):
# find the last match, or None if not found
match = None
for match in regex.finditer(s):
pass
if match:
return s[:match.start()], s[slice(*match.span())], s[match.end():]
else:
return ('', '', s)
它们都通过利用生成的match
对象来切割原始字符串。