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...

-
Comunicaciones
- ¿Tesla hará un teléfono? Sí, dice Morgan Stanley
- La ley de radio AM a la que se oponen las industrias tecnológica y automotriz está a punto de aprobarse
- WhatsApp agrega opción para usar la misma cuenta en varios teléfonos
- Geary: un atractivo cliente de correo electrónico moderno para Linux
- La BBC resucita las transmisiones de onda corta de la era de la Segunda Guerra Mundial mientras Rusia bloquea las noticias sobre la invasión de Ucrania
- Cómo ver la Televisión gratis en Linux
- Revelado las misteriosas grabaciones de voz humana hechas 3 décadas antes de Thomas Edison
- Está el Ping de los blog nuevamente de moda?
- PostmarketOS, La distro Linux para tu teléfono móvil Smartphone
- Activar el modo oscuro de WhatsApp para iPhone y Android.
- Fallo en el WhatsApp podría secuestrar tu teléfono, actulización urgente.
- ¿Qué es la tecnología 5G y cómo cambiará nuestras vidas?
- TeamViewer inaugura su comunidad de usuarios en español
- Cómo grabar la pantalla en Linux
- ¿En qué gastamos la batería de nuestro móvil?