texto regulares regular que permite para numeros letras expresiones expresion espacios espacio ejemplos cualquier caracter blanco regex whitespace trailing

regex - que - expresiones regulares



¿Cómo elimino los espacios en blanco finales usando una expresión regular? (6)

Quiero eliminar los espacios en blanco finales y las pestañas de mi código sin eliminar las líneas vacías.

Lo intenté:

/s+$

y:

([^/n]*)/s+/r/n

Pero todos eliminaron las líneas vacías también. Supongo que /s coincide con los caracteres de final de línea.

ACTUALIZACIÓN (2016):

Hoy en día, automatizo dicha limpieza de código utilizando el paquete TrailingSpaces de Sublime, con configuración personalizada / usuario:

"trailing_spaces_trim_on_save": true

Destaca los espacios en blanco finales y los recorta automáticamente al guardar.


Intente simplemente eliminar los espacios y las pestañas finales:

[ /t]+$


La plataforma no está especificada, pero en C # ( .NET ) sería:

Expresión regular (supone la opción multilínea ; el ejemplo siguiente lo utiliza):

[ /t]+(/r?$)

Reemplazo :

$1

Para obtener una explicación de "/ r? $", Consulte Opciones de expresión regular, Modo multilínea (MSDN).

Ejemplo de código completo

Esto eliminará todos los espacios finales y todos los TABs finales en todas las líneas:

string cleanedUpText = Regex.Replace(inputText, @"[ /t]+(/r?$)", @"$1", RegexOptions.Multiline);


Para eliminar el espacio en blanco al final mientras se ignoran las líneas vacías, uso look-behind positivo:

(?<=/S)/s+$

El look-behind es el camino para excluir el espacio no en blanco (/ S) de la coincidencia.


Para eliminar los espacios en blanco finales al tiempo que también se conservan las líneas que solo son espacios en blanco, desea que la expresión regular solo elimine los espacios en blanco finales después de los caracteres que no sean espacios en blanco. Por lo tanto, primero debes buscar un carácter que no sea un espacio en blanco. Esto significa que el carácter que no sea un espacio en blanco se incluirá en la coincidencia, por lo que debe incluirlo en el reemplazo.

Regex: ([^ /t/r/n])[ /t]+$

Reemplazo: /1 o $1 , dependiendo del IDE


Regex para encontrar espacios en blanco finales y posteriores:

^[ /t]+|[ /t]+$


Si usa Visual Studio 2012 y versiones posteriores ( que usa expresiones regulares .NET ), puede eliminar los espacios en blanco finales sin eliminar las líneas en blanco usando la siguiente expresión regular

Reemplazar (?([^/r/n])/s)+(/r?/n|/z)

Con $1

Alguna explicacion

La razón por la que necesita la expresión bastante complicada es que la clase de caracteres coincide con espacios, tabulaciones y caracteres de nueva línea, por lo que /s+ coincidirá con un grupo de líneas que solo contengan espacios en blanco. No ayuda agregar una terminación en $ a esta expresión regular, ya que esto aún coincidirá con un grupo de líneas que contienen solo espacios en blanco y caracteres de nueva línea.

También es posible que desee saber (como lo hice) exactamente lo que significa la expresión (?([^/r/n])/s) . Esta es una construcción de alternancia , que efectivamente significa una coincidencia con la clase de caracteres de espacio en blanco si no es un retorno de carro o salto de línea.

Las construcciones de alternancia normalmente tienen una parte verdadera y falsa,

(?( expression ) yes | no )

pero en este caso no se especifica la parte falsa.