Welk regex patroon moet ik doorgeven aan de java.lang.String.split()
methode om een String te splitsen in een Array van substrings met gebruik van alle witruimte tekens (' ', '\t', '\n', etc.) als scheidingstekens?
Iets in de trant van
myString.split("\\s+");
Dit groepeert alle witte spaties als scheidingsteken.
Dus als ik de string heb:
"Hallo[spatie][tab]Wereld"
Dit zou de strings "Hello"
en "World"
moeten opleveren en de lege ruimte tussen de [spatie]
en de [tab]
weglaten.
Zoals VonC al aangaf, moet de backslash worden ge-escaped, omdat Java eerst zou proberen de string te escapen naar een speciaal karakter, en dat zou sturen om te worden geparseerd. Wat je wilt, is de letterlijke "\s"
, wat betekent, dat je "\s"
moet doorgeven. Het kan een beetje verwarrend worden.
Het s
is gelijk aan [ \\n\x0B\f\r]
In de meeste regex dialecten zijn er een aantal handige karakter samenvattingen die je voor dit soort dingen kunt gebruiken - dit zijn goede om te onthouden:
`w
- Komt overeen met elk woord karakter.
WW
- Komt overeen met elk niet-woord teken.
`` - Teken dat overeenkomt met een spatie wit.
S
- Tekent alles behalve spaties.
D
- Komt overeen met elk cijfer.
D
- Overeenkomt alles behalve cijfers.
Een zoekopdracht naar "Regex Cheatsheets" zou je moeten belonen met een heleboel nuttige samenvattingen.