2016-08-08 26 views
0

Ich habe den folgenden regulären Ausdruck in einer Flex-Datei. (.l Datei)leer im regulären Ausdruck in Flex

doctype [[:blank:] \r\n]*<!DOCTYPE[^\[]*\[[[:blank:] \r\n]* 

Von einem Flex-Tutorial, in dem pattern chapiter, sah ich, dass flex defines ‘[:blank:]’ as a blank or a tab.
Aber in dem obigen Ausdruck, warum brauchen wir eine andere leer, nachdem [:blank:]?

+3

Sie brauchen es nicht, Sie können es entfernen. –

Antwort

2

Die [:blank:] POSIX-Zeichenklasse entspricht einem Leerzeichen oder einer Registerkarte (auch in der FLEX patterns manual).

Somit entspricht die Zeichenklasse [[:blank:] \r\n][[:blank:]\r\n].

Wie [rr] = [r].

+1

Hinweis, ich habe * Zeichenklasse * (nicht * Klammerausdruck *) Begriff verwendet, da der Regex-Flavor hier eigentlich kein POSIX ist, ein '.' entspricht irgendeinem Symbol, aber einem Newline in Flex Regex. –