Cómo verificar si una línea está en blanco usando expresiones regulares

Estoy tratando de hacer expresiones regulares simples que verifiquen si una línea está en blanco o no.

Caso;

" some" // not blank " " //blank "" // blank 

El patrón que desea es algo como esto en modo multilínea:

 ^\s*$ 

Explicación:

  • ^ es el comienzo del ancla de cuerda.
  • $ es el final del ancla de cuerda.
  • \s es la clase de caracteres en blanco.
  • * es cero o más repetición de.

En el modo multilínea, ^ y $ también coinciden con el principio y el final de la línea.

Referencias

  • regular-expressions.info/Anchors , Character Classes y Repetition .

Una alternativa no regex:

También puedes verificar si una line hilo dada está “en blanco” (es decir, contiene solo espacios en blanco) trim() -ing it, y luego verificar si la cadena resultante es isEmpty() .

En Java, esto sería algo como esto:

 if (line.trim().isEmpty()) { // line is "blank" } 

La solución de expresiones regulares también se puede simplificar sin anclajes (debido a cómo se definen las matches en Java) de la siguiente manera:

 if (line.matches("\\s*")) { // line is "blank" } 

Referencias de API

  • String String.trim()
    • Devuelve una copia de la cadena, con el espacio en blanco inicial y final omitido.
  • boolean String.isEmpty()
    • Devuelve true si, y solo si, length() es 0 .
  • boolean String.matches(String regex)
    • Indica si esta cadena (completa) coincide o no con la expresión regular dada.

De hecho, en el modo multilínea una respuesta más correcta es esta:

 /((\r\n|\n|\r)$)|(^(\r\n|\n|\r))|^\s*$/gm 

La respuesta aceptada: ^\s*$ no coincide con un escenario cuando la última línea está en blanco (en modo multilínea).

Prueba esto:

 ^\s*$ 

La expresión regular más portátil sería ^[ \t\n]*$ para que coincida con una cadena vacía (tenga en cuenta que tendría que reemplazar \t y \n con tabulación y nueva línea en consecuencia) y [^ \n\t] para que coincida con cadena no blanca

Aquí en blanco significa lo que estás significando.
Una línea contiene espacios en blanco o una línea no contiene nada.
Si quiere hacer coincidir una línea que no contiene nada, use ‘/ ^ $ /’.

Crédito completo a bchr02 por esta respuesta . Sin embargo, tuve que modificarlo un poco para ver el escenario de las líneas que tienen */ (fin del comentario) seguido de una línea vacía. La expresión regular coincidía con la línea no vacía con */ .

Nuevo: (^(\r\n|\n|\r)$)|(^(\r\n|\n|\r))|^\s*$/gm

Todo lo que hice fue agregar ^ como segundo caracter para indicar el comienzo de la línea.

Bueno … hice algunos cambios (usando Notepadd ++) y esta es la solución que encontré

\ n \ s

\ n para el final de la línea (donde empiezas a hacer correspondencias) – el símbolo de intercalación no sería de ayuda en mi caso, ya que el comienzo de la fila es una cadena \ s toma espacio hasta la siguiente cadena

Espero eso ayude