2012-05-24 11 views
6

mam tego regex: [\s\S-[<>]]*Zrozumienie regex [ s S - [<>]] *

mógłbyś mi pomóc zrozumieć, co to wyrażenie oznacza? Z tego, co widzę, oznacza klasę znaków utworzoną ze spacji i zakresu od znaków spoza przestrzeni do < lub>?

To nie ma większego sensu ..

Dzięki!

+0

jakim języku? – Tim

+0

jest dla Javy, stosuje się do wzorca walidatora XSD:

Odpowiedz

8

Jest to wariant obsługiwany tylko przez kilka silników regex (.NET, JGSoft, XML Schema i XPath, ale nie na przykład natywny regex Java) i nazywa się character class substraction.

Na przykład

[A-Z-[EFG]] 

dopasowuje dowolny list od A do Z wyjątkiem E, F lub G.

Ale w twoim przypadku, to naprawdę nie ma większego sensu, ponieważ [\s\S] dopasowuje dowolny znak - ten sam wynik (w dowolnym smaku regex) można osiągnąć przez

[^<>]* 
+0

Dzięki! Ale jeśli napisałbym [A \ S - [<>]] - czy to znaczy: "znak A lub dowolny znak spoza" <> "? –

+0

A może jeszcze prostsze, czy [\ S - [<>]] oznacza wszystkie znaki spoza "<>? –

+0

@leadgy: Tak, ale zawsze możesz napisać to inaczej, na przykład '[^ \ s <>]'. –

Powiązane problemy