Hvilket regex-mønster skal jeg sende til metoden java.lang.String.split()
for at opdele en streng i et array af understrenge ved hjælp af alle mellemrumstegn (' ', '\t', '\n', osv.) som afgrænsere?
Noget i retning af
myString.split("\\s+");
Dette grupperer alle hvide mellemrum som en afgrænser.
Så hvis jeg har strengen:
Hello[space][tab]World""
Dette skulle give strengene "Hello"
og "World"
og udelade det tomme mellemrum mellem [space]
og [tab]
.
Som VonC påpegede, skal backslash'en undslippes, fordi Java først ville forsøge at undslippe strengen til et specialtegn og sende det til parsering. Det, du ønsker, er den bogstavelige "\s"
, hvilket betyder, at du skal overgive "\\s"
. Det kan blive en smule forvirrende.
\\\s
svarer til [ \\t\\n\x0B\f\\\r]
I de fleste regex-dialekter findes der et sæt praktiske tegnresuméer, som du kan bruge til denne slags ting - disse er gode at huske:
\w
- Passer til ethvert ordtegn.
\W
- Passer til ethvert tegn, der ikke er et ord.
\s
- Passer til ethvert tegn med hvidt mellemrum.
\S
- Passer til alt andet end tegn med hvidt mellemrum.
\d
- Passer til ethvert ciffer.
\D
- Passer til alt undtagen cifre.
En søgning på "Regex Cheatsheets" burde give dig en masse nyttige oversigter.