Python正则表达式搜索和分割

7
在PHP中,可以使用带有标志PREG_OFFSET_CAPTURE的函数preg_match来搜索字符串中的正则表达式模式,并知道其前后内容。例如,给定字符串aaa bbb ccc ddd eee fff,我想要匹配分割r'ddd'并得到以下结果:
before = 'aaa bbb ccc '
match = 'ddd'
after = ' eee fff'

如何在Python中实现这个功能?谢谢。
1个回答

12
你可以使用re.split(),但是需要在模式周围加上括号以保存匹配结果:
>>> re.split('(ddd)', 'aaa bbb ccc ddd eee fff', 1)
['aaa bbb ccc ', 'ddd', ' eee fff']

但在这种情况下,您根本不需要使用正则表达式:

>>> 'aaa bbb ccc ddd eee fff'.partition('ddd')
('aaa bbb ccc ', 'ddd', ' eee fff')

编辑:我也应该提到一下,使用re.split时将得到所有匹配组,因此您需要为此做好准备,否则在您以前为优先级使用括号的地方使用非捕获组:

>>> re.split('(d(d)d)', 'aaa bbb ccc ddd eee fff', 1)
['aaa bbb ccc ', 'ddd', 'd', ' eee fff']

不知道你可以用 re.split() 做到那个。谢谢。 - dorsh

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接