85 votes

erreur regex - rien à répéter

Je reçois un message d’erreur lorsque j’utilise cette expression :

J’ai vérifié le regex chez RegExr et il revient `` comme prévu. Mais quand je l’essaie en Python, j’obtiens ce message d’erreur:

Quelqu’un peut-il expliquer?

56voto

mb14 Points 7166

Il semble s’agir d’un bug python (qui fonctionne parfaitement dans vim). La source du problème est le (\s*...) + bit. Fondamentalement, vous ne pouvez pas faire `` ce qui a du sens, parce que vous essayez de répéter quelque chose qui peut être nul.

Cependant, `` cela ne devrait pas être nul, mais nous le savons uniquement parce que nous savons ce qu’il y a dans \1. Apparemment, python ne ... C’est bizarre.

20voto

Franklyn Points 31

C’est un bug Python entre « * » et les caractères spéciaux.

Au lieu de

Essayer:

Il fonctionne, mais ne fait pas la même expression régulière.

Ce bug semble avoir été corrigé entre 2.7.5 et 2.7.6.

11voto

Ando Jurai Points 493

Ce n’est pas seulement un bug Python avec * en fait, cela peut aussi arriver lorsque vous passez une chaîne dans le cadre de votre expression régulière à compiler, comme ;

cela provoquera une erreur si la ligne traitée contenait des « (+) » par exemple, comme vous pouvez le trouver dans les formules chimiques, ou de telles chaînes de caractères. la solution est de s’échapper mais quand vous le faites à la volée, il peut arriver que vous ne le fassiez pas correctement...

11voto

Ayoub Arroub Points 61

l’expression régulière utilise normalement * et + en théorie du langage. Je rencontre le même bug lors de l’exécution du code de ligne

pour le résoudre, il doit inclure \ avant * et +

8voto

nealmcb Points 1223

Au-delà du bug qui a été découvert et corrigé, je vais juste noter que le message d’erreur est un peu déroutant. J’essayais de l’utiliser comme modèle, et je pensais qu’il se plaignait pour une raison étrange à propos du , mais le problème est en fait que c’est une façon de dire « répéter zéro ou une fois ». J’avais donc besoin de dire pour correspondre à un littéral

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X