2014-10-18 5 views
2

나는 IDLE에 있었고 정규 표현식을 사용하여 문자열을 정렬하기로 결정했습니다. 난에 입력 한 때 온라인 자습서는 할 수있는 모든 인쇄했다,에 나에게 말한 :파이썬 3에서 정규식 일치 결과를 인쇄하는 방법?

<_sre.SRE_Match object at 0x00000000031D7E68> 

전체 프로그램 :

import re 
reg = re.compile("[a-z]+8?") 
str = "ccc8" 
print(reg.match(str)) 

결과 :

<_sre.SRE_Match object at 0x00000000031D7ED0> 

아무도 말해 줄 수 결과를 실제로 인쇄하는 방법?

+1

'print (reg.match (str) .group())' –

답변

7

함수 다음에 .group()을 넣어야 일치하는 문자열을 인쇄 할 수 있습니다. 그렇지 않으면 일치 여부가 표시됩니다. 캡처 링 그룹에서 캡처 한 문자를 인쇄하려면 해당 그룹 인덱스를 .group() 함수에 전달해야합니다.

>>> import re 
>>> reg = re.compile("[a-z]+8?") 
>>> str = "ccc8" 
>>> print(reg.match(str).group()) 
ccc8 

캡처 그룹이있는 정규식. 문자열의 시작 부분에 0 개 이상의 문자는 정규 표현식 패턴과 일치하는 경우

>>> reg = re.compile("([a-z]+)8?") 
>>> print(reg.match(str).group(1)) 
ccc 

re.match (패턴, 문자열, 플래그 = 0)

는 해당 MatchObject 인스턴스를 반환합니다. 문자열이 패턴과 일치하지 않으면 None을 반환합니다. 이것은 길이가 0 인 일치와는 다릅니다.

다중 모드에서도 re.match()는 각 행의 시작 부분이 아니라 문자열의 시작 부분에서만 일치합니다.