Hvilket regex-mønster trenger jeg å sende til java.lang.String.split()
-metoden for å dele en streng i en matrise med delstrenger ved å bruke alle mellomromstegn (' ', '\t', '\n', etc.) som skilletegn?
Noe i retning av
myString.split("\\s+");
Dette grupperer alle hvite mellomrom som skilletegn.
Så hvis jeg har strengen:
"Hallo[mellomrom][tab]Verden"
Dette skal gi strengene "Hello" og "World", og det tomme mellomrommet mellom "space" og "tab" skal utelates.
Som VonC påpekte, bør backslash være escaped, fordi Java vil først prøve å escape strengen til et spesialtegn, og sende det for å bli analysert. Det du vil ha, er det bokstavelige "s", som betyr at du må sende "s". Det kan bli litt forvirrende.
\\s
tilsvarer [ \\t\\n\\x0B\\f\\r]
.
I de fleste regex-dialekter er det et sett med praktiske tegnsammendrag du kan bruke til denne typen ting - disse er gode å huske:
\w
- Matcher et hvilket som helst ordtegn.
\W
- Matcher alle tegn som ikke er ord.
\s
- Matcher et hvilket som helst mellomromstegn.
\S
- Matcher alt annet enn mellomromstegn.
\d
- Matcher et hvilket som helst siffer.
\D
- Matcher alt unntatt sifre.
Et søk etter "Regex Cheatsheets" bør belønne deg med mange nyttige sammendrag.