2 votes

Question sur les expressions rationnelles en python

Je souhaite faire correspondre certains symboles uniquement lorsqu'ils ne sont pas préfixés par des caractères spécifiques. Par exemple, faire correspondre "))))))))))" lorsqu'il n'est pas précédé de "x". J'ai besoin de conseils. Mon expression actuelle est

(?<!x|X|:|=|\\1)([\|()\[\]])+

ce qui ne fonctionne pas.

[EDIT] Reformuler ma question

1voto

suzanshakya Points 709

Utiliser des classes de caractères complémentaires : '[^x\)](\)+)'
Tous vos caractères spécifiques qui ne doivent pas être préfixés seront placés avec x , ainsi que ) .

1voto

tzot Points 32224
re.search(r"(?<![x)])\)+", text)

>>> re.search(r"(?<![x)])\)+", " hello)))))")
<_sre.SRE_Match object at 0xb75c0c98>
>>> _.group()
')))))'
>>> re.search(r"(?<![x)])\)+", " hellox)))))")
>>>

Il s'agit de l'utilisation de la fonction " affirmation négative de l'arrière-plan Nous voulons autant de parenthèses que possible, non précédées d'un "x" ou d'un ")" (ce dernier parce que "x" n'est pas un mot). (ce dernier parce que sinon, on obtiendrait les parenthèses à partir de la deuxième parenthèse, précédées de la première parenthèse et donc pas d'un "x")

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