¿Qué patrón regex tendría que pasar al método java.lang.String.split()
para dividir una cadena en un array de subcadenas utilizando todos los caracteres de espacio en blanco (' ', '\t', '\n', etc.) como delimitadores?
Algo así como
myString.split("\\s+");
Esto agrupa todos los espacios en blanco como delimitador.
Así que si tengo la cadena
`"Hola[espacio][tabulador]Mundo"
Esto debería producir las cadenas "Hola"y
"Mundo"y omitir el espacio vacío entre el [espacio]
y el [tabulador]
.
Como señaló VonC, la barra invertida debe ser escapada, porque Java intentaría primero escapar la cadena a un carácter especial, y enviar eso para ser analizado. Lo que usted quiere, es el literal "\s"
, lo que significa, usted necesita pasar "\s"
. Puede ser un poco confuso.
El \s
es equivalente a [\t\n\x0B\f\\r]
En la mayoría de los dialectos regex hay un conjunto de resúmenes de caracteres convenientes que se pueden utilizar para este tipo de cosas - estos son buenos para recordar:
\w
- Coincide con cualquier carácter de palabra.
W - Coincide con cualquier carácter que no sea una palabra.
\s
- Coincide con cualquier carácter de espacio en blanco.
\S
- Coincide con cualquier carácter que no sea un espacio en blanco.
\d
- Coincide con cualquier dígito.
\D
- Coincide con cualquier cosa excepto los dígitos.
Una búsqueda de "Regex Cheatsheets" debería recompensarle con un montón de resúmenes útiles.