在PHP中,可以使用带有标志PREG_OFFSET_CAPTURE
的函数preg_match
来搜索字符串中的正则表达式模式,并了解后面的内容和最先出现的内容。例如,给定字符串aaa bbb ccc ddd eee fff
,我想匹配拆分的r'ddd'
并具有:
before = 'aaa bbb ccc '
match = 'ddd'
after = ' eee fff'
如何在python中做到这一点?感谢
您可以使用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']