Python正则表达式搜索和拆分

时间:2012-01-23 10:56:51

标签: python regex

在PHP中,可以使用带有标志preg_match的函数PREG_OFFSET_CAPTURE来搜索字符串中的正则表达式模式,并知道后面的内容和首先出现的内容。例如,给定字符串aaa bbb ccc ddd eee fff,我想匹配拆分r'ddd'并拥有:

before = 'aaa bbb ccc '
match = 'ddd'
after = ' eee fff'

如何在python中执行此操作?感谢

1 个答案:

答案 0 :(得分: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']