2010-11-19 20 views
0

Verilen dize s = '(A /something_1)(B /something_2)(C /something_3),/,(D /something_4)(D /something_5)'piton regex gruplama

bu çıktıyı almak istiyorum: (C /something_3),/,(D /something_4)(D /something_5)

ben eşleşen tutmak bütün dize s yerine alt dize yukarıda almanın. Ben re.search(r'(\(C.*\)),/,(\(D.*\))+')

Herhangi bir yardım takdir kullanıyorum

...

cevap

4

Sadece yaklaşık ordasın - re.search(r'(\(C.*\)),/,(\(D.*\))+', s).group() istediğini alacak.

>>> import re 
>>> s = '(A /something_1)(B /something_2)(C /something_3),/,(D /something_4)(D /something_5)' 
>>> re.search(r'(\(C.*\)),/,(\(D.*\))+', s).group() 
'(C /something_3),/,(D /something_4)(D /something_5)' 

Bunu gruplara ayırmak mı istiyorsunuz? Python 2.7 kullanarak

1

, ben sen kesin sonuç almak sonra:

import re 
s = '(A /something_1)(B /something_2)(C /something_3),/,(D /something_4)(D /something_5)' 
m = re.search(r'(\(C.*\)),/,(\(D.*\))+', s) 

s[m.start():m.end()] == '(C /something_3),/,(D /something_4)(D /something_5)'