2012-10-30 13 views
6

Mam wyrażenie regularne, które dopasowuje alfabety, liczby, _ i - (o minimalnej i maksymalnej długości).Python regex: W tym spacje wewnątrz zakresu znaków

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

Chcę uwzględnić białe spacje w tym zestawie znaków.

Zgodnie z dokumentacją Python:

Klasy znaków takich jak \ w \ s lub Akceptowane są również wewnątrz zestawu.

Tak próbowałem:

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

Ale to daje zły zakres charakter błędu. Jak mogę uwzględnić białe znaki w powyższym zbiorze?

Odpowiedz

18

Problem to nie \s, ale , który wskazuje zakres znaków, chyba że znajduje się na końcu lub na początku klasy. Użyj tego:

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

Dzięki m.buettner. Pozycja - był problem –

2

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

_-\s był interpretowany jako zakres. Przedstawiona kreska musi być pierwszą lub ostatnią postacią wewnątrz [...]

+0

Dzięki dda. Problem był rzeczywiście w pozycji - –

0

Jesteś na dobrej drodze, Dodaj drugi ukośnik odwrotny, aby uniknąć ukośnika, ponieważ ukośnik odwrotny jest znakiem ucieczki.

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