làm cách nào để lấy chuỗi mẫu từ mẫu regexp đã biên dịch trong python


87

Tôi có một số mã như sau:

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

Có thể lấy chuỗi "my pattern"từ pbiến không?

Câu trả lời:


108
p.pattern

Đọc thêm về mô-đun lại tại đây: http://docs.python.org/library/re.html


7
Cảm ơn. Tôi không đọc tài liệu vì tôi đã thử i dir (p) và nó chỉ hiển thị một số thuộc tính và phương thức. stackoverflow.com/questions/1415924/…
Mykola Kharechko

Tôi đã làm như vậy, giả định không có cách nào đơn giản để có được nó :)
Anentropic

1
có vẻ như trong python3 dir (some_compiled_pattern) hiển thị các thuộc tính, nhưng không phải trong 2,7
David Lam

10
> Tại sao không đọc tài liệu trước khi đăng những câu hỏi như vậy? Bởi vì khi bạn google StackOverflow trả về đầu tiên. Câu hỏi hoàn toàn hợp lệ.
Aaron

21

Từ phần "Đối tượng Biểu thức Chính quy" của retài liệu mô-đun:

RegexObject.pattern

Chuỗi mẫu mà từ đó đối tượng RE được biên dịch.

Ví dụ:

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

Với remô-đun trong Python 3.0 trở lên, bạn có thể tìm thấy điều này bằng cách thực hiện đơn giản 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']

Tuy nhiên, điều này không hoạt động trên Python 2.6 (hoặc 2.5) - dirlệnh không hoàn hảo, vì vậy, nó luôn đáng để kiểm tra tài liệu!

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

9

Đúng:

print p.pattern

gợi ý, sử dụng dirhàm trong python để lấy danh sách các thành viên:

dir(p)

danh sách này:

['__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 )hữu ích hơn nhiều trên bảng điều khiển.
Jochen Ritzel, 12/09/09
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.