che sto cercando di fare quanto segue con un'espressione regolare:Python espressioni regolari per sostituire tutto, ma le parole specifiche
import re
x = re.compile('[^(going)|^(you)]') # words to replace
s = 'I am going home now, thank you.' # string to modify
print re.sub(x, '_', s)
Il risultato che ottengo è:
'_____going__o___no______n__you_'
il risultato che voglio è:
'_____going_________________you_'
Dal momento che l'^
può essere utilizzato solo tra parentesi []
, questo risultato ha senso, ma non sono sicuro di come fare altrimenti.
Ho anche provato '([^g][^o][^i][^n][^g])|([^y][^o][^u])'
ma produce '_g_h___y_'
.
Solo FYI: il motivo per cui il '[^ (going) |^(you)]' fallisce è perché la sintassi '[..]' produce una * sola corrispondenza di caratteri *. Il '' 'all'inizio è speciale, anzi significa 'non', ma ogni cosa dopo è considerata un set personalizzato di caratteri:'()^ginouy | '. – usr2564301