2016-10-04 3 views
0

print(truth(prog.match(text, 0, 6)))이 true 인 이유를 이해해 주시겠습니까?정규식 : endpos를 이해할 수 없습니다

import re 
from operator import truth 

prog = re.compile(r'<HTML>$') 
text = "<HTML>   " 
print("Last symbol: {}".format(len('<HTML>')-1)) 
print(truth(prog.match(text, 0, 6))) 
print(truth(prog.match(text))) 
+3

'진실'이란 무엇입니까? '부룩'이라고 했니? – orlp

+0

'truth'는 내장되어 있지 않습니다 : 누락 된 코드가 있거나'True'와 같지 않습니다 ... – brianpck

+0

@brianpck 죄송합니다. – orlp

답변

1

컴파일 된 정규식의 match(text, startpos, endpos) 방법을 사용하는 경우, 그것은 당신이 match(text[startpos:endpos])을 통과 한 경우 역할을합니다 (잘 not exactly을하지만, $의 목적을 위해, 그것은이다). 이것은 <HTML>이 입력의 마지막에 있다고 생각할 것입니다 (이것은 $과 일치합니다).

그러나이 경우가 아니면 text 끝에 여분의 공백이 있으면 $이 일치하지 않으므로 일치하는 항목이 없습니다.

+0

흠, 상황을 잘 설명해줍니다. 이 기능은 문서화되지 않았습니까? – Michael

+0

@Michael [It is] (https://docs.python.org/3/library/re.html#re.regex.match)입니다. – orlp

+0

문서에서 : pos 및 endpos 매개 변수는 검색 영역을 제한합니다. 나는 그것이 썰기처럼 작동한다고 쓰여지지 않는다고 말할 것이다. 그건 그렇고, 슬라이스처럼 작동한다면, 우리는 처음과 같은 효과를 볼 수 없을까요? text = "" print (truth (prog.match (text, 1))) – Michael

관련 문제