6
votes

Correspondant à A + dans une regex

Cela devrait être facile, mais j'ai réussi à soulever 2 personnes à ce jour au travail et j'en ai été pendant plus de 3 heures maintenant, alors voici.

J'ai besoin de remplacer A + avec APLUS (avec quelques autres cas) avec le module Python Re. par exemple. "J'ai passé mon examen A +." doit devenir "j'ai passé mon examen APLUS".

Il suffit d'utiliser \ BA + fonctionne bien la plupart du temps, mais échoue dans le cas d'A + B, donc je ne peux donc pas l'utiliser, il doit correspondre à un + comme mot distinct. J'ai essayé \ Ba + \ B mais qui échoue parce que je suppose que le + est une limite de mot.

J'ai aussi essayé \ BA + \ w qui fonctionne, mais est gourmand et mange l'espace (ou tout autre chargeur non alpha qui serait là).

Toute suggestion s'il vous plaît?


2 commentaires

Correction sur la regex: je m'échappais le +, je me suis trompé. Donc, c'était \ BA \ +, \ BA \ + \ B, etc.


Ces informations appartiennent à la question, de ne pas commenter.


3 Réponses :


8
votes

Tournez ce \ w code> dans une affirmation.

\ba\+(?!\w)


0 commentaires

1
votes
>>> re.sub(r'\ba\+\s', 'aplus ', 'I passed my a+ exam.')
'I passed my aplus exam.'
>>> re.sub(r'\ba\+\s', 'aplus ', 'a+b')
'a+b'

0 commentaires

0
votes

Vous devez échapper au + comme il a une signification spéciale dans Regexp (un ou plusieurs A). Recherche A \ + au lieu de A +


0 commentaires