2012-05-24 20 views
6

ho questo regex: [\s\S-[<>]]*Comprendere l'espressione regolare [ s S - [<>]] *

la prego di aiutarmi a capire che cosa significa la sigla questa espressione per? Da quello che vedo significa una classe di caratteri formata da spazi e un intervallo da caratteri non spaziali a < o>?

Non ha molto senso ..

Grazie!

+0

Quale lingua? – Tim

+0

è per Java, si applica in un modello di convalida XSD:

risposta

8

Questa è una variante supportata solo da alcuni motori regex (.NET, JGSoft, XML Schema e XPath ma non ad esempio regex Java nativo) e si chiama character class substraction.

Per esempio,

[A-Z-[EFG]] 

corrisponde a qualsiasi lettera di A a Z tranne E, F o G.

Ma nel tuo caso, in realtà non ha molto senso, perché [\s\S] corrisponde a qualsiasi carattere - lo stesso risultato (in tutto il sapore regex) può essere raggiunto con

[^<>]* 
+0

Grazie! Ma se scrivessi [A \ S - [<>]] - significherebbe: "il carattere A o qualsiasi carattere non spaziale senza <>"? –

+0

O ancora più semplice, [\ S - [<>]] significa tutti i caratteri non spaziali senza <>? –

+0

@leadgy: Sì, ma puoi sempre scriverlo in modo diverso, ad esempio '[^ \ s <>]'. –

Problemi correlati