[python] 파이썬에서 컴파일 된 정규식 패턴에서 패턴 문자열을 어떻게 얻을 수 있습니까?

다음과 같은 코드가 있습니다.

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

변수 "my pattern"에서 문자열을 가져올 수 p있습니까?



답변

p.pattern

re 모듈에 대한 자세한 내용은
http://docs.python.org/library/re.html을 참조하십시오.


답변

모듈 문서 의 “정규 표현식 객체” 섹션에서 re:

RegexObject.pattern

RE 개체가 컴파일 된 패턴 문자열입니다.

예를 들면 :

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

rePython 3.0 이상의 모듈을 사용하면 다음 과 같이 간단하게 찾을 수 있습니다 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']

그러나 이것은 Python 2.6 (또는 2.5)에서 작동 하지 않습니다 . dir명령이 완벽하지 않으므로 항상 문서를 확인할 가치가 있습니다!

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


답변

예:

print p.pattern

힌트, dirpython 의 함수를 사용하여 멤버 목록을 얻으십시오.

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


답변