2010-11-19 10 views
0

Gegeben Zeichenfolge s = '(A /something_1)(B /something_2)(C /something_3),/,(D /something_4)(D /something_5)'python regex Gruppierung

Ich möchte diese Ausgabe erhalten: (C /something_3),/,(D /something_4)(D /something_5)

Ich halte die ganze Zeichenfolge s passend, anstatt über Teilzeichenfolge bekommen.

Ich bin mit re.search(r'(\(C.*\)),/,(\(D.*\))+')

Jede Hilfe ist willkommen ...

Antwort

4

Sie sind im Begriff es nur - re.search(r'(\(C.*\)),/,(\(D.*\))+', s).group() erhalten Sie, was Sie wollen.

>>> 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)' 

Wollen Sie das in Gruppen weiter aufteilen?

1

Mit Python 2.7, erhalte ich das genaue Ergebnis Sie nach:

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)'