regular pattern matches expresion edittext java regex

java - pattern - regular expression android edittext



Expresión regular de Java para hacer coincidir_all_ whitespace characters (7)

Estoy buscando una expresión regular en Java que coincida con todos los caracteres de espacios en blanco en una cadena. "/ s" coincide solo con algunos, no coincide   y espacios en blanco no ascii similares. Estoy buscando una expresión regular que coincida con todos los caracteres de espacio en blanco (comunes) que pueden aparecer en Java String.

[Editar]

Para aclarar: no me refiero a la secuencia de la cadena "   " me refiero al sincle Unicode carácter U + 00A0 que a menudo se representa por "   ", por ejemplo, en HTML, y todos los demás caracteres Unicode con un espacio de espacio en blanco similar. por ejemplo, "NARROW NO-BREAK SPACE" (U + 202F), Word joiner codificado en Unicode 3.2 y superior como U + 2060, "ZERO WIDTH NO-BREAK SPACE" (U + FEFF) y cualquier otro carácter que pueda ser considerado como blanco -espacio.

[Responder]

Para mi pupose, es decir, capturar todos los caracteres de espacios en blanco, unicode + tradicional, la siguiente expresión hace el trabajo:

[/p{Z}/s]

La respuesta está en los comentarios a continuación, pero como está un poco escondida, la repito aquí.


& nbsp; no es un personaje de espacio en blanco, en lo que concierne a las expresiones regulares. Debe modificar la expresión regular para incluir esas cadenas además de / s, como / (/ s | & nbsp; |% 20) /, o analizar previamente el contenido de la cadena para obtener la representación ASCII o Unicode de los datos.

Estás mezclando niveles de abstracción aquí.

Si después de una cuidadosa lectura de la pregunta parece ser el caso, está buscando una forma de hacer coincidir todos los caracteres de espacio en blanco que se refieren al ASCII estándar más los puntos de código de espacio en blanco, /p{Z} o /p{Zs} harán el trabajo .

Realmente deberías aclarar tu pregunta porque ha engañado a mucha gente (incluso haciendo la respuesta correcta para tener algunos votos negativos).


Aclasaste la pregunta de la manera que esperaba: en realidad no estás buscando el literal String   como muchos aquí parecen pensar y para los cuales la solución es demasiado obvia.

Bueno, desafortunadamente, no hay forma de combinarlos usando expresiones regulares. Lo mejor es incluir los puntos de código específicos en el patrón, por ejemplo: "[//s//xA0]" .

Edite como aparece en uno de los comentarios, puede usar el "//p{Z}" para esto. Alan, ¿puedes dejar un comentario sobre cómo lo descubriste? Este es bastante útil.



El   es solo espacio en blanco en HTML. Utilice un analizador de HTML para extraer el texto sin formato. y debería funcionar bien.


En caso de que alguien se vuelva a encontrar con esta pregunta en busca de ayuda, sugiero seguir con la siguiente respuesta: https://.com/a/6255512/1678392

La versión corta: //p{javaSpaceChar}

Por qué: según la clase Pattern , este correlaciona el método Character.isSpaceChar :

Las categorías que se comportan como java.lang.Character boolean son los métodos de nombre de método (excepto los desaprobados) están disponibles a través de la misma sintaxis / p { prop } donde la propiedad especificada tiene el nombre de nombre de método java.

👍



  no es espacio en blanco Es una secuencia de codificación de caracteres que representa espacios en blanco en HTML. Lo más probable es que desee convertir texto codificado en HTML en texto sin formato antes de ejecutar su coincidencia de cadenas en su contra. Si ese es el caso, ve a buscar javax.swing.text.html