2016-01-27 13 views
5

Ho guardato in modo tokenization è implementato in scikit-learn e abbiamo trovato questo regex (source):Cosa fa "(? U)" in un'espressione regolare?

token_pattern = r"(?u)\b\w\w+\b" 

L'espressione regolare è piuttosto semplice, ma non ho mai visto la parte (?u) prima. Qualcuno può spiegarmi cosa sta facendo questa parte?

+4

È equivalente al flag 're.U' – vaultah

+0

E sembra piuttosto specifico per Python. –

+0

@sln: puoi elaborare per favore? – fwind

risposta

13

Accende lo re.U (re.UNICODE) flag per questa espressione.

Dal module documentation:

(?iLmsux)

(Una o più lettere dal set 'i', 'L', 'm', 's', 'u', 'x'.) Il gruppo corrisponde alla stringa vuota; le lettere impostano i flag corrispondenti: re.I (ignorare il caso), re.L (dipendente dalle impostazioni internazionali), re.M (multilinea), re.S (punto corrisponde a tutti), re.U (dipendente Unicode) e re.X (dettagliato), per l'intera espressione regolare . (I flag sono descritti nei Contenuti del modulo.) Ciò è utile se si desidera includere i flag come parte dell'espressione regolare, invece di passare un argomento flag alla funzione re.compile().

+1

Questo ha senso ... Grazie per la rapida risposta! – fwind