Question

Je suis frappais ma tête contre le clavier à la recherche de l'illumination par Google et tous les docs Python que je pourrais obtenir mes mains sur, mais ne pouvait pas trouver une réponse à une question que je vais rencontrer.

Je l'expression rationnelle suivante que je lance sur un site Web, mais Python insiste dans la mise re.DOTALL sur elle, même si mon code ne dit pas à:

\d+. +(?P<season>\d+) *\- *(?P<episode>\d+).*?(?P<day>\d+)(?:\/|\s)+(?P<month>[A-Za-z]+)(?:\/|\s)+(?P<year>\d+) +(?:<a .+><img .+></a>)? ?<a .*?>(?P<name>.*?)</a>

Cela crée une série de saisons / épisodes pour les listes émission de télévision, et il fonctionne très bien, sauf sur epguides.com/BurnNotice (lors de l'utilisation des listes de TVRage), en raison d'un espacement avant les nouvelles lignes (I deviner).

Utilisation http://re-try.appspot.com pour tester, je l'ai réduit sur la question de l'utilisation de re.DOTALL. Si je l'activer sur re-essayer, il reproduit les résultats que je reçois quand je le lance autonome sur mon script. Si j'untick DOTALL, il me donne les résultats que j'attends.

Comment puis-je forcer Python ne pas utiliser re.DOTALL?

Le script fonctionne aussi bien sur Ubuntu et Mac OS X.

Était-ce utile?

La solution

.+> devrait changer pour [^>]+> et

.*?> à [^>]*>

Vous pouvez essayer de remplacer les points d'autres dans [^\r\n] aussi, mais surtout 2 changements devrait être suffisant.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top