2016-10-04 12 views
0

print(truth(prog.match(text, 0, 6)))が真である理由を理解できたら助かりますか?正規表現: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 [これは(https://docs.python.org/3/library/re.html#re.regex.match)です。 – orlp

+0

documentation:posおよびendposパラメータは、検索領域を制限します。私はそれがスライスのように機能すると書かれていないと言うでしょう。ところで、それがスライスのように働くのであれば、初めと同じ効果が見えませんでしたか? text = "" print(truth(prog.match(text、1))) – Michael

関連する問題