2012-03-26 5 views
6

En esta declaración, tomada desde el código fuente Pagerank:Pattern.compile ("\ [. +? \]");

Pattern.compile("\\[.+?\\]"); 

¿Qué significa el patrón? He intentado estudiarlo, dice 2 barras diagonales significan un solo corte, pero ¿cuál es el .+??

Respuesta

14

Esta cadena literal:

"\\[.+?\\]" 

significa esta cadena:

\[.+?\] 

Así que esta expresión:

Pattern.compile("\\[.+?\\]"); 

significa esta expresión regular:

\[.+?\] 

que significa "literal [, seguido de uno o más caracteres — preferiblemente el menor número posible — seguido de ]". (. significa "cualquier carácter que no sea línea nueva"; +? significa "uno o más de lo que acabo de decir, y preferiblemente el menor número posible".) Por lo general, la expresión regular coincide con [____], donde ____ puede contener cualquier cosa que no contenga una nueva línea, siempre que tenga al menos un carácter; y donde ____no (normalmente) contiene un ] excepto posiblemente como el primer caracter.

Para obtener más información acerca de Pattern y expresiones regulares en Java, consulte the documentation for the Pattern class.

+1

Muy buena explicación. Especialmente el caso de esquina donde la expresión regular coincide con '[] ...]' es importante mencionar. –

+0

increíble, gracias! – user1291453

+0

@ user1291453: ¡De nada! – ruakh

Cuestiones relacionadas