2012-05-24 15 views
6

Ich habe diese regex: [\s\S-[<>]]*die Regex Verständnis [ s S - [<>]] *

Könnten Sie mir bitte helfen, zu verstehen, was dieser Ausdruck für nicht stehen? Was ich sehe, bedeutet eine Zeichenklasse aus Leerzeichen und einem Bereich von Nicht-Leerzeichen bis < oder>?

Es ist nicht viel Sinn macht ..

Dank!

+0

Welche Sprache erreicht werden? – Tim

+0

es ist für Java, es gilt in einem XSD-validator-Muster:

Antwort

8

Dies ist eine Variante, die nur von einigen Regex-Engines unterstützt wird (.NET, JGSoft, XML-Schema und XPath, aber nicht zum Beispiel native Java Regex) und heißt character class substraction.

Zum Beispiel

[A-Z-[EFG]] 

paßt zu jedem Brief von A zu Z außer E, F oder G.

Aber in Ihrem Fall, es macht wirklich nicht viel Sinn, weil [\s\S] alle Zeichen übereinstimmt - das gleiche Ergebnis (in jedem regex Geschmack) durch

[^<>]* 
+0

Vielen Dank! Aber wenn ich [A \ S - [<>]] schreiben würde - würde das bedeuten: "das Zeichen A oder irgendein Leerzeichen ohne <>"? –

+0

Oder noch einfacher, würde [\ S - [<>]] alle Nicht-Leerzeichen ohne <> bedeuten? –

+0

@leadgy: Ja, aber Sie können immer anders schreiben, zum Beispiel '[^ \ s <>]'. –

Verwandte Themen