2012-10-30 17 views
6

Ho un'espressione regolare che corrisponde a alfabeti, numeri, _ e - (con una lunghezza minima e massima).regex Python: compresi gli spazi bianchi nell'intervallo di caratteri

^[a-zA-Z0-9_-]{3,100}$ 

Voglio includere spazi in quel set di caratteri.

Secondo la documentazione Python:

classi di caratteri come \ w o \ S sono accettati anche all'interno di un set.

Così ho provato:

^[a-zA-Z0-9_-\s]{3,100}$ 

ma dà cattivo errore intervallo di caratteri. Come posso includere spazi bianchi nel set sopra?

risposta

18

Il problema non è \s ma - che indica un intervallo di caratteri, a meno che non si trovi alla fine o all'inizio della classe. Utilizzare questa:

^[a-zA-Z0-9_\s-]{3,100}$ 
+0

Grazie m.buettner. Posizione di - era il problema –

2

^[-a-zA-Z0-9_\s]{3,100}

_-\s è stato interpretato come un intervallo. Un trattino che rappresenta se stesso deve essere il primo o l'ultimo carattere all'interno [...]

+0

Grazie dda. Il problema era davvero la posizione di - –

0

Sei sulla strada giusta, aggiungi una seconda barra rovesciata per sfuggire alla barra, perché la barra rovesciata è un carattere di escape.

^[a-zA-Z0-9_\\-\\s]{3,100}$ 
Problemi correlati