2016-01-27 4 views
5

Ich sah, wie sich tokenization in implementiert Scikit-Learn und fand diese regex (source):Was macht "(? U)" in einer Regex?

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

Die Regex ist ziemlich einfach, aber ich habe noch nie den (?u) Teil gesehen. Kann mir jemand erklären, was dieser Teil macht?

+4

Es ist äquivalent zu 're.U' Flagge – vaultah

+0

Und sieht eher Python spezifisch. –

+0

@sln: Können Sie bitte erläutern? – fwind

Antwort

13

Es schaltet die re.U (re.UNICODE) flag für diesen Ausdruck ein.

Vom module documentation:

(?iLmsux)

(Ein oder mehr Buchstaben aus der Menge 'i', 'L', 'm', 's', 'u', 'x'.) Die Gruppenspiele die leere Zeichenfolge; Die Buchstaben setzen die entsprechenden Flags: re.I (Groß-/Kleinschreibung ignorieren), re.L (Gebietsschema abhängig), re.M (mehrzeilig), re.S (Punkt entspricht allen), re.U (Unicode-abhängig) und re.X (ausführlich), für den gesamten regulären Ausdruck . (Die Flags werden in Modulinhalt beschrieben.) Dies ist nützlich, wenn Sie die Flags als Teil des regulären Ausdrucks einfügen möchten, statt ein Flag-Argument an die re.compile()-Funktion zu übergeben.

+1

Das macht Sinn ... Danke für die schnelle Antwort! – fwind