2010-06-08 11 views
6

Questo dovrebbe essere facile, ma sono riuscito a fermare 2 persone finora sul lavoro & Sono stato a questo per oltre 3 ore ora, quindi ecco qui.Corrispondenza a + in un'espressione regolare

Ho bisogno di sostituire un + con aplus (insieme ad alcuni altri casi) con il modulo re Python. es. "Ho superato il mio esame a +". deve diventare "Ho superato il mio esame in più".

L'uso di \ ba + funziona bene la maggior parte del tempo, ma fallisce nel caso di un + b, quindi non posso usarlo, deve corrispondere a + come parola distinta. Ho provato \ ba + \ b ma non riesce perché presumo che il + sia un limite di parole.

Ho anche provato \ ba + \ W che funziona, ma è avido e mangia lo spazio (o qualsiasi altro carattere non alfa che sarebbe lì).

Qualche suggerimento, per favore?

+0

Correzione sull'espressione regolare: stavo scappando dal +, ho appena sbagliato. Quindi era \ ba \ +, \ ba \ + \ b, ecc. – dochead

+1

questa informazione appartiene alla domanda, non al commento. – SilentGhost

risposta

8

Trasforma tale \W in una affermazione.

\ba\+(?=\W) 

o, meglio,

\ba\+(?!\w) 

poiché l'asserzione negativa permette corrispondente al a+ alla fine della stringa troppo.

+0

Grazie, funziona alla grande – dochead

1
>>> 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

È necessario sfuggire al + poiché ha un significato speciale in regexp (uno o molti a). ricerca a\+ invece di a+

Problemi correlati