Ich habe diesen Eintrag gesehen.
Verwenden Sie \ A und \ z anstelle von ^ und $ für die Validierung normaler Ausdrücke
Hmm, ich wusste es nicht, ich habe mich gefragt, was mit Python passiert ist, also habe ich es versucht. Die Version ist 3.3.
Als ich \ z wie Ruby angegeben habe, hat es nicht wie erwartet funktioniert, also habe ich mich gefragt, warum und als ich mir das Dokument angesehen habe, war es \ Z.
>>> import re
>>> re.match('\Aabc\Z', 'abc')
<_sre.SRE_Match object at 0x7f12f3d371d0>
>>> re.match('\Aabc\Z', 'abc\ndef')
>>>
Übrigens scheinen \ Z und \ z in Ruby getrennt zu sein. \ Z scheint zu urteilen, indem er den letzten Zeilenumbruch ignoriert.
Es wurde gesagt, dass Ruby eine Falle sein würde, da es sich standardmäßig im mehrzeiligen Modus befindet, aber Python war nicht so, also bin ich erleichtert. Fügen Sie die Option "re.MULTILINE" hinzu, um den Mehrzeilenmodus aufzurufen.
>>> re.match('^abc$', 'abc\ndef')
>>>
>>> re.match('^abc$', 'abc\ndef', re.MULTILINE)
<_sre.SRE_Match object at 0x7f12f3d37168>
Beachten Sie, dass $ auch dann übereinstimmt, wenn Sie sich nicht im Mehrzeilenmodus befinden und die nachfolgende Unterbrechung ignorieren. \ Z ignoriert nachfolgende Unterbrechungen nicht.
>>> re.match('^abc$', 'abc\n')
<_sre.SRE_Match object at 0x7f12f3d371d0>
>>> re.match('\Aabc\Z', 'abc\n')
>>>
Ich fragte mich, was es war, aber anscheinend gab es kein \ A oder \ z. (Es ist wahr, weil ich es nur ein wenig nachgeschlagen habe.)
Recommended Posts