2012-01-23 10 views
7

PHPでは、文字列内の正規表現を検索して何が先になるかを知るために、preg_matchというフラグをフラグPREG_OFFSET_CAPTUREとともに使用することができます。例えば、文字列aaa bbb ccc ddd eee fff与えられ、私は一致分割しr'ddd'たいと持っている:Pythonの正規表現検索と分割

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

がどのようにPythonでこれを行うには?おかげ

答えて

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を使用すると、一致するグループがすべて取得されるため、そうでない場合は、括弧をprに使用するすべてのグループを使用する必要がありますecedence:

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

あなたは 're.split()'でこれを行うことができないのか分かりませんでした。ありがとう –