python - regolare - excel espressioni regolari



Come escludere un personaggio da un gruppo di espressioni regolari? (2)

Potresti semplicemente usare una classe di caratteri negata invece:

re.compile(r"[^a-zA-Z0-9-]")

Questo corrisponderà a tutto ciò che non è compreso negli intervalli alfanumerici o in un trattino. Corrisponde anche al trattino basso, come per la tua espressione regolare.

>>> r = re.compile(r"[^a-zA-Z0-9-]")
>>> s = "some#%te_xt&with--##%--5 hy-phens  *#"
>>> r.sub("",s)
'sometextwith----5hy-phens'

Si noti che questo sostituisce anche gli spazi (che possono certamente essere ciò che si desidera).

Modifica: SilentGhost ha suggerito che potrebbe essere più economico per il motore da elaborare con un quantificatore, nel qual caso puoi semplicemente utilizzare:

re.compile(r"[^a-zA-Z0-9-]+")

Il + causerà semplicemente qualsiasi esecuzione di caratteri consecutivamente abbinati a tutti i match (ed essere sostituiti) allo stesso tempo.

Voglio rimuovere tutti i caratteri non alfanumerici TRANNE il trattino da una stringa (python). Come posso modificare questa espressione regolare in modo che corrisponda a un carattere non alfanumerico tranne il trattino?

re.compile('[\W_]')

Grazie.


Answer #1

\w corrisponde alfanumerici, aggiungi il trattino, quindi annulla l'intero set: r"[^\w-]"





regex