2011-11-15 19 views
11

¿Cómo puedo dividir una cadena usando [ como delimitador?Dividir usando un soporte

String line = "blah, blah [ tweet, tweet"; 

si hago

line.split("["); 

consigo un error

Excepción en el hilo "principal" java.util.regex.PatternSyntaxException: clase de caracteres sin cerrar cerca de índice 1 [

¿Algún ayuda?

Respuesta

32

El [ es un char reservada en expresiones regulares, lo que necesita para escapar de ella,

line.split("\\["); 
4

Sólo escapar de ella:

line.split("\\["); 

[ es un meta-carácter especial en expresiones regulares que necesita ser escapado si no dentro de una clase de caracteres, como en su caso.

2

Utilice "\\[" en lugar de "[".

3

El método split funciona utilizando expresiones regulares. El carácter [ tiene un significado especial en aquellos; se usa para denotar clases de caracteres entre [ y ]. Si desea utilizar un corchete de apertura literal, use \\[ para escapar de él como un carácter especial. Hay dos barras porque una barra invertida también se usa como un carácter de escape en los literales de Java String. Puede ser un poco confuso escribir expresiones regulares en código Java.

2

El carácter [ se interpreta como una expresión regular carácter especial, por lo que tiene que escapar de ella:

line.split("\\[");

Cuestiones relacionadas