J'ai vu cette entrée.
Utilisez \ A et \ z au lieu de ^ et $ pour la validation d'expression normale
Hmm, je ne savais pas, je me demandais ce qui s'était passé avec python, alors je l'ai essayé. La version est la 3.3.
Quand j'ai spécifié \ z comme Ruby, cela ne fonctionnait pas comme prévu, alors je me suis demandé pourquoi, et quand j'ai regardé le document, c'était \ Z.
>>> import re
>>> re.match('\Aabc\Z', 'abc')
<_sre.SRE_Match object at 0x7f12f3d371d0>
>>> re.match('\Aabc\Z', 'abc\ndef')
>>>
Au fait, il semble que \ Z et \ z soient séparés dans Ruby. \ Z semble juger en ignorant le dernier saut de ligne.
On a dit que Ruby serait un piège car il est en mode multiligne par défaut, mais Python ne l'était pas, donc je suis soulagé. Ajoutez l'option re.MULTILINE
pour passer en mode multiligne.
>>> re.match('^abc$', 'abc\ndef')
>>>
>>> re.match('^abc$', 'abc\ndef', re.MULTILINE)
<_sre.SRE_Match object at 0x7f12f3d37168>
Notez que même si vous n'êtes pas en mode multiligne, $ correspondra en ignorant le saut de fin. \ Z n'ignore pas les sauts de fin.
>>> re.match('^abc$', 'abc\n')
<_sre.SRE_Match object at 0x7f12f3d371d0>
>>> re.match('\Aabc\Z', 'abc\n')
>>>
Je me demandais ce que c'était, mais apparemment il n'y avait pas de \ A ou de \ z. (C'est vrai parce que je viens de chercher un peu.)
Recommended Posts