Wie kann ich eine Musterzeichenfolge aus einem kompilierten regulären Ausdrucksmuster in Python erhalten?


87

Ich habe einen Code wie diesen:

>>> import re
>>> p = re.compile('my pattern')
>>> print p
_sre.SRE_Pattern object at 0x02274380

Ist es möglich, einen String "my pattern"aus einer pVariablen zu erhalten?

Antworten:


108
p.pattern

Weitere Informationen zum Modul finden Sie hier: http://docs.python.org/library/re.html


7
Vielen Dank. Ich lese keine Dokumente, weil ich i dir (p) versuche und es nur einige Attribute und Methoden anzeigt. stackoverflow.com/questions/1415924/…
Mykola Kharechko

Ich tat das gleiche, nahm an, dass es keinen einfachen Weg gab, es zu bekommen :)
Anentropic

1
scheint wie in python3 dir (some_compiled_pattern) die Attribute anzeigt, aber nicht in 2.7
David Lam

10
> Warum nicht Dokumente lesen, bevor Sie solche Fragen stellen? Denn wenn Sie googeln, kehrt StackOverflow zuerst zurück. Vollkommen gültige Frage.
Aaron

21

Aus dem Abschnitt "Objekte mit regulären Ausdrücken" der reModuldokumentation:

RegexObject.pattern

Die Musterzeichenfolge, aus der das RE-Objekt kompiliert wurde.

Beispielsweise:

>>> import re
>>> p = re.compile('my pattern')
>>> p
<_sre.SRE_Pattern object at 0x1001ba818>
>>> p.pattern
'my pattern'

Mit dem reModul in Python 3.0 und höher können Sie dies folgendermaßen finden dir(p):

>>> print(dir(p))
['__class__', '__copy__', '__deepcopy__', '__delattr__', '__doc__',
'__eq__', '__format__', '__ge__', '__getattribute__', '__gt__',
'__hash__', '__init__', '__le__', '__lt__', '__ne__', '__new__',
'__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__',
'__str__', '__subclasshook__', 'findall', 'finditer', 'flags',
'groupindex', 'groups', 'match', 'pattern', 'scanner', 'search',
'split', 'sub', 'subn']

Dies funktioniert jedoch nicht unter Python 2.6 (oder 2.5) - der dirBefehl ist nicht perfekt, daher lohnt es sich immer, die Dokumente zu überprüfen!

>>> print dir(p)
['__copy__', '__deepcopy__', 'findall', 'finditer', 'match', 'scanner',
'search', 'split', 'sub', 'subn']

9

Ja:

print p.pattern

Hinweis: Verwenden Sie die dirFunktion in Python, um eine Liste der Mitglieder zu erhalten:

dir(p)

diese Liste:

['__class__', '__copy__', '__deepcopy__', '__delattr__', '__doc__', '__eq__',
'__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__',
'__le__', '__lt__', '__ne__', '__new__', '__reduce__', '__reduce_ex__',
'__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__',
'findall', 'finditer', 'flags', 'groupindex', 'groups', 'match', 'pattern',
'scanner', 'search', 'split', 'sub', 'subn']

3
help( value )ist auf der Konsole viel nützlicher.
Jochen Ritzel
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.