2011-05-11 12 views
9

Encontré algunas expresiones regulares que contienen [^\\p{L}]. Entiendo que esto es el uso de algún tipo de una categoría Unicode, pero cuando me registré the documentation, sólo encontré los siguientes "L" categorías:¿Cuál es la categoría {L} Unicode?

Lu Uppercase letter UPPERCASE_LETTER 
Ll Lowercase letter LOWERCASE_LETTER 
Lt Titlecase letter TITLECASE_LETTER 
Lm Modifier letter  MODIFIER_LETTER 
Lo Other letter  OTHER_LETTER 

¿Cuál es L en este contexto?

Respuesta

12

Tomado de este enlace: http://www.regular-expressions.info/unicode.html

consultar la sección de Unicode Character Properties.

\ p {L} coincide con un único punto de código en la categoría "carta". Si su cadena de entrada es un codificado como U + 0061 U + 0300, que coincide con un sin el acento. Si la entrada está codificada como U + 00E0, coincide con à con el acento. El motivo es que los dos puntos de código U + 0061 (a) y U + 00E0 (à) están en la categoría "letra", mientras que U + 0300 está en la categoría "marca".

+0

Gracias y +1 a ti también. Su comentario sobre mi comentario/pregunta a la respuesta de @Ned Batchelder es apreciado. – uTubeFan

+0

El enlace solo merece una aceptación. – uTubeFan

+0

Para una referencia "oficial" a la categoría "L", consulte aquí: http://unicode.org/reports/tr18/#General_Category_Property – CodeClimber

2

no veo ninguna mención explícita de la misma, sino un ejemplo de this page indica que \\p{L} significa cualquier letra:

Categories may be specified with the optional prefix Is: Both \p{L} and \p{IsL} denote the category of Unicode letters. 
+0

Eso es lo que pensaba, también, pero entonces ¿por qué reemplazar la siguiente expresión regular (con un espacio) ** ** todo lo que es ** ** no una carta? 'String.replaceAll (" [^ \\ p {L}] "," ")' – uTubeFan

+2

@uTubeFan: observa que está utilizando * negation * en '^ \\ p {L}'. Entonces, cuando hago algo como esto '" Test akd ^^%! ~ + _) ". ReplaceAll (" [^ \\ p {L}] "," ")' luego se emite 'Test akd'. Por el contrario, si haces algo como esto '" Prueba akd ^^%! ~ + _) ". ReplaceAll (" [\\ p {L}] "," ");' la salida será '^^% ! ~ + _) ' – Favonius

+0

@Favonius ¡Gracias! Entonces, ¿puedo concluir de esto que '^%! ~ + _' son ** cartas ** consideradas? (Básicamente, estoy buscando para reemplazar a todos los no-letras (excepto apóstrofe ' ''' como en wasn't') con un espacio, alguna sugerencia?) – uTubeFan

Cuestiones relacionadas