¿Por qué haces coincidir los espacios en blanco por separado de los otros caracteres? ¿Y por qué anclan el partido al principio, pero no al final? Si desea asegurarse de que la cadena no se inicia o termina con un espacio en blanco, usted debe hacer algo como esto:
^[A-Za-z0-9_.&,-]+(?:\s+[A-Za-z0-9_.&,-]+)*$
Ahora sólo hay un motor de expresiones regulares "camino" puede tomar a través de la cadena. Si se agota el número de caracteres que coinciden con [A-Za-z0-9_.&,-]
antes de llegar al final y el siguiente carácter no coincide con \s
, falla inmediatamente. Si llega al final sin dejar de coincidir con los espacios en blanco, falla porque es necesario que coincida con al menos un carácter que no sea de espacios en blanco después de cada ejecución de espacios en blanco.
Si desea asegurarse de que no es exactamente un carácter de espacio en blanco que separa las carreras de no está en blanco, basta con retirar el cuantificador de \s+
:
^[A-Za-z0-9_.&,-]+(?:\s[A-Za-z0-9_.&,-]+)*$
Si no les importa donde el espacio en blanco es en relación con el no está en blanco, al igual que coincida con todos ellos con la misma clase de caracteres:
^[A-Za-z0-9_.&,\s-]+$
Asumo que sabe que su expresión regular no coincidirá con la entrada dada por la :
y (
en el SMI ley, y solo quieres saber por qué tardas tanto en fallar.
Y, por supuesto, ya que va a crear la expresión regular en la forma de una cadena literal de Java, podría escribir:
"^[A-Za-z0-9_.&,-]+(?:\\s+[A-Za-z0-9_.&,-]+)*$"
o
"^[A-Za-z0-9_.&,-]+(?:\\s[A-Za-z0-9_.&,-]+)*$"
o
"^[A-Za-z0-9_.&,\\s-]+$"
(Sé que tuviste barras invertidas dobles en la pregunta original, pero eso fue probablemente solo para mostrarlas correctamente ya que no estaba usando la excelente función de formato de código de SO.)
¿Qué intenta igualar o extraer de esa cadena? Su expresión regular parece que coincidiría básicamente con cualquier oración. – nickb
@ user1531484 - puede publicar el código completo, es decir, Patrón, Matcher y código a buscar. – Saurabh
¿Funciona cuando quitas el emoticón y el número de la cadena? – amon