your programing

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

lovepro 2020. 10. 5. 20:32
반응형

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


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

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

참고 URL : https://stackoverflow.com/questions/1415924/how-can-i-obtain-pattern-string-from-compiled-regexp-pattern-in-python

반응형