LinuxParty
En mi artículo anterior sobre las expresiones regulares, di algunos ejemplos de maneras en las que sepuede utilizar en la línea de comandos, con varias utilidades. Las Expresiones regulares también se pueden utilizar dentro de muchos editores de texto (a veces con una sintaxis ligeramente diferente, pero la esencia es la misma). Voy a usar Vim y Emacs, como ejemplos, para diferentes editores puede ser necesario consultar el manual para los detalles de la sintaxis.
Buscar y reemplazar, es probablemente la operación que usted más utiliza en cuanto a expresiones regulares en un editor. Primero veamos una simple no-regexp de búsqueda y reemplazo. Digamos que usted acaba de decidir cambiar el nombre de una variable 'foo' por 'fooOne'.
En la consola de texto:
echo foo |sed s/foo/fooOne/
Otros ejemplos:
echo día |sed s/día/mañana/
echo hola tío| sed s/tío/tía/
echo hola ¿cual es tu nombre?|sed s/"¿cual es tu nombre?"/"¿como te llamas?"/
En Vim, pulse Esc para activar el modo de comandos, y a continuación escriba:
:%s/foo/fooOne/g
% Significa que la operación debe llevarse a cabo en todo el documento. La parte importante es
s/foo/fooOne/g (También aplicable a sed)
que significa "reemplazar todas las instancias de 'foo' con 'fooOne'". La letra final g significa "global", sin ella se sustituirá el primer lugar en cada línea, pero con ella, se reemplaza cada ocurrencia.
Para utilizar este patrón de búsqueda y remplazo en emacs, Pluse: M-x y entonces escriba replace-string RET foo RET fooOne.
Sin embargo, mientras que esta operación no-regexp substituiría foo por el fooOne, también substituiría foobar por fooOnebar, que usted probablemente no quiera. Para evitar esto, utilice los marcadores de límite de palabra < y > así:
:%s/\<foo\>/fooOne/g
Esto restringe el reemplazo para ocurrir solamente cuando ' foo' exista como palabra (con un carácter (par de caracteres) del límite de palabra en cada lado de él). En Emacs:
M-x replace-regexp RET \<foo\> RET fooOne
Backreferences (como lo visto en el apartado anterior) puede también ser muy útil. Por ejemplo, digamos que quiere cambiar todas las referencias de las fechas en un archivo de estilo estadounidense (09/22/09) al estilo europeo, con año largo y un punto en vez de una raya vertical (22.09.2009). Esta regexp en Vim sería algo como:
:%s#\<\(\d\+\)/\(\d\+\)/\(\d\{2\}\)\>#\2.\1.20\3#g
Para Emacs:
M-x replace-regexp RET \<\([[:digit:]]+\)/\([[:digit:]]+\)/\([[:digit:]]\{2\}\)\> RET \2.\1.20\3
OK, que parece bastante complicado! En primer lugar, vamos a señalar que en vim, usamos # en lugar de /, dándonos s###g en lugar de s///g. Esto hace que sea más fácil de leer si usted está buscando / en el patrón, y también significa que usted no necesita escapar cualquier caracter /
Como se discutió en el artículo anterior, cada par de paréntesis, \<PATT\>, guarda una retrorreferencia a PATT. Aquí tenemos tres backreferences, con un límite de palabra delante y detrás (la \< y \>), separados por una barra entre cada uno de los backreferences (como en 09/22/09).
El primer patrón que estamos buscando es \d\+: y eso significa que al menos buscamos un dígito caracter (\d). Así que esto coincidirá con 9, 09, 12, etc.
En Emacs, esto se escribe [[:digit:]]+ (no hay necesidad de escapar el + en la sintaxis regexp de emacs, como se debe hacer en Vim). También puede usarse [[:digit:]] en lugar de \d en vim si lo prefiere.
:%s#\<\(\d\+\)/\(\d\+\)/\(\d\{2\}\)\>#\2.\1.20\3#g
La secuencia del reemplazo es entonces sencilla: reordene los tres backreferences de modo que vengan los dígitos del día primero, después el mes, después el año con 20 delante de ella, separado todo por un punto.
¡¡Sencillo!!
Artículos Relacionados.
Ejemplos de Expresiones Regulares:
Renombrar múltiples ficheros, quitar espacios, mayúsculas, etc...

-
Juegos
- Se informa que Half-Life 3 se podrá jugar en su totalidad
- La última versión del cliente Steam de Valve permite una descarga más rápida de actualizaciones en Linux
- Los juegos para PC superan a las consolas desde hace años, según un informe
- DXVK 2.5.3 trae mejoras para Far Cry 5, Max Payne 3 y otros juegos
- Instalar Steam en Fedora Linux.
- Juego Simulador de Camiones para Linux: Euro Truck Simulator 2
- Cómo instalar Steam en Linux para empezar a jugar miles de juegos
- Valve lanza una actualización del cliente Steam para mejorar aún más los juegos nativos en Linux
- Half-Life 2 celebra su 20º aniversario
- La nueva actualización del cliente Steam añade grabación de juegos y mejora los juegos nativos en Linux
- Este videojuego de estrategia bélica, es tan bueno que hasta el Pentágono lo usa como entrenamiento
- Una fórmula de ajedrez se está apoderando del mundo
- Los 15 mejores juegos de Linux que deberías jugar en 2024
- Los 28 mejores juegos del MS-DOS disponibles online para jugar gratis en tu Navegador.
- Distribuciones de Linux para Juegos: Elevando la Experiencia de Juego en 2023