Portal    Foro    Buscar    FAQ    Registrarse    Conectarse


Publicar nuevo tema  Responder al tema 
Página 1 de 1
 
 
Find Y Problema Con Las Expresiones Regulares
Autor Mensaje
Responder citando   Descargar mensaje  
Mensaje Find Y Problema Con Las Expresiones Regulares 
 
Buenas!.

Pues el problema que me encontré fue que usando expresiones regulares por ejemplo con un juego llamado:
Impossible Mission también existía Impossible Mission II

A la hora de buscar Impossible Mission

find . -regex '\(.*Impossible Mission.*\)$*.tzx'
 


Salida:

Citar:

./Ordenadores/8bits/Spectrum/Coleccion/Tzx/I/Impossible Mission II (1988)(US Gold)[b].tzx
./Ordenadores/8bits/Spectrum/Coleccion/Tzx/I/Impossible Mission II (19xx)(Kixx)(Side A)[Re-Release].tzx
./Ordenadores/8bits/Spectrum/Coleccion/Tzx/I/Impossible Mission II (1988)(US Gold).tzx
./Ordenadores/8bits/Spectrum/Coleccion/Tzx/I/Impossible Mission (1985)(US Gold)[a].tzx
./Ordenadores/8bits/Spectrum/Coleccion/Tzx/I/Impossible Mission (1985)(Ricochet)[Re Release].tzx
./Ordenadores/8bits/Spectrum/Coleccion/Tzx/I/Impossible Mission (1985)(Compulogical - US Gold)(Es).tzx
./Ordenadores/8bits/Spectrum/Coleccion/Tzx/I/Impossible Mission II (19xx)(Kixx)(Side B)[Re-Release].tzx
./Ordenadores/8bits/Spectrum/Coleccion/Tzx/I/Impossible Mission (1987)(Erbe - US Gold)(Es).tzx
./Ordenadores/8bits/Spectrum/Coleccion/Tzx/I/Impossible Mission (1985)(US Gold).tzx


Entonces, ¿ como podía mostrar solo su primera parte ?.

Impossible Mission II tiene un espacio después del nombre y los caracteres II
Me interesa que se muestre cualquier línea que incluya Impossible Mission más un espacio y que no se muestre uno o más caracteres "I" y al final que la extensión tenga .tzx

Traduciéndolo a expresión regular.

find . -regex '\(.*Impossible Mission\s[^I]+\)$*.tzx'
 


Citar:

./Ordenadores/8bits/Spectrum/Coleccion/Tzx/I/Impossible Mission (1985)(US Gold)[a].tzx
./Ordenadores/8bits/Spectrum/Coleccion/Tzx/I/Impossible Mission (1985)(Ricochet)[Re Release].tzx
./Ordenadores/8bits/Spectrum/Coleccion/Tzx/I/Impossible Mission (1985)(Compulogical - US Gold)(Es).tzx
./Ordenadores/8bits/Spectrum/Coleccion/Tzx/I/Impossible Mission (1987)(Erbe - US Gold)(Es).tzx
./Ordenadores/8bits/Spectrum/Coleccion/Tzx/I/Impossible Mission (1985)(US Gold).tzx


. Cualquier caracter
.* Repite un caracter hasta donde le digamos
\s espacio en blanco
[I] Coincide con ese caracter
[^I] No coincide con ese caracter.
+ y * son casi parecidos.
$ coincide al final de la línea

Y ahora aprovechando las expresiones regulares para encontrar tres juegos usé:
El asterisco se podría haber sustituido por el signo "+"

find . -regex '\(.*Impossible Mission\s[^I].*\|.*Kendo.*\|.*Jetpac.*\)$*.tzx'
 


Salida:

Citar:

./Ordenadores/8bits/Spectrum/Coleccion/Tzx/J/Jetpac (1983)(Ultimate)[a2].tzx
./Ordenadores/8bits/Spectrum/Coleccion/Tzx/J/Jetpac (1983)(Ultimate).tzx
./Ordenadores/8bits/Spectrum/Coleccion/Tzx/J/Jetpac (1983)(Ultimate)[a].tzx
./Ordenadores/8bits/Spectrum/Coleccion/Tzx/K/Kendo Warrior (1989)(Byte Back)[Re-Release].tzx
./Ordenadores/8bits/Spectrum/Coleccion/Tzx/K/Kendo Warrior (1989)(Byte Back).tzx
./Ordenadores/8bits/Spectrum/Coleccion/Tzx/I/Impossible Mission (1985)(US Gold)[a].tzx
./Ordenadores/8bits/Spectrum/Coleccion/Tzx/I/Impossible Mission (1985)(Ricochet)[Re Release].tzx
./Ordenadores/8bits/Spectrum/Coleccion/Tzx/I/Impossible Mission (1985)(Compulogical - US Gold)(Es).tzx
./Ordenadores/8bits/Spectrum/Coleccion/Tzx/I/Impossible Mission (1987)(Erbe - US Gold)(Es).tzx
./Ordenadores/8bits/Spectrum/Coleccion/Tzx/I/Impossible Mission (1985)(US Gold).tzx


Sin expresiones regulares:

find . -type f  \( -iname "*impossible*" -not -iname "*II*" -o -iname "JetPac*" -o -iname "kendo w*" \) -and -name \*.tzx
 


Con expresiones regulares. Añadamos también que quiero mostrar solo archivos.

find . -type f -regex '\(.*Impossible Mission\s[^I].*\|.*Kendo.*\|.*Jetpac.*\)$*.tzx'
 


Cuestión de costumbres y usar el más adecuado. El primer método es más largo y no es complicado, el segundo es más corto y algo enrevesado.

Saludos
 




===================
Gambas Básico
“Si no puedes explicar algo de forma sencilla, entonces es que tú no lo entiendes bien.” Albert Einstein
 
Shell - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Find Y Problema Con Las Expresiones Regulares 
 
Hola

Te recomiendo esta página de expresiones regulares, está muy bien explicado todo (en inglés, of course). El autor de la web es el desarrollador de la aplicación que vende y que sirve para aprender y manejar regex, muy útil pero sólo para usuarios de Windows. Lo importante es conocer el funcionamiento de las expresiones regulares y su uso en distintos lenguajes de programación, cuyas diferencias estriban en la forma en la que se integra con el lenguaje en cuestión y sus caracteres de escape.

https://www.regular-expressions.info/tutorial.html

Saludos
 




===================
Jesús Guardón

Por favor, usemos el corrector ortográfico antes de pulsar el botón "Enviar".

"uo ǝs ʇɐu pıɟıɔıן ɐdɹǝupǝɹ ɐ dɹoƃɹɐɯɐɹ, soןo ɥɐʎ bnǝ dɹodouǝɹsǝןo"
 
jguardon - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Find Y Problema Con Las Expresiones Regulares 
 
Jesús:

Creo que se te olvidó el enlace de la página.  

Las expresiones regulares las comencé a ver e un curso de Python en su día en Coursera.
Ahora mucho de los cursos hay que pagarlos, los que son especialización. Al igual que en CodeAcademy.
(Que tengo que buscar uno de introducción a C++ para compartir el enlace con vosotros.)

Luego al usarlos con comandos de Linux, no he notado demasiada diferencia en las instrucciones.
Si acaso como se deben usar en cada lenguaje.

También lo he usado en gambas, con alguna pequeña limitación de no existir a veces similitudes con Python.
Aunque no lo uso mucho, tengo instalado el programa "Kiki" ...(mal pensados!).

Saludos
 




===================
Gambas Básico
“Si no puedes explicar algo de forma sencilla, entonces es que tú no lo entiendes bien.” Albert Einstein
 
Shell - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Find Y Problema Con Las Expresiones Regulares 
 
Oops! Editado el mensaje con el enlace  

Añado un par de recursos para probar y aprender su uso:

https://regexr.com/  Es una página donde se pueden probar y analizar expresiones. Tiene una base de datos de usuarios para distintos casos muy útil.

visual-regexp  Es un programa que se puede instalar en distribuciones basadas en Debian/Ubuntu, mediante apt.

Saludos
 




===================
Jesús Guardón

Por favor, usemos el corrector ortográfico antes de pulsar el botón "Enviar".

"uo ǝs ʇɐu pıɟıɔıן ɐdɹǝupǝɹ ɐ dɹoƃɹɐɯɐɹ, soןo ɥɐʎ bnǝ dɹodouǝɹsǝןo"
 
jguardon - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Find Y Problema Con Las Expresiones Regulares 
 
Jesús:

Gracias.

De visual-regxep parece construido con la librería tcl/tk.    

https://wiki.tcl-lang.org/page/Visual+REGEXP

Y también hacen referencia a Emacs.

https://www.emacswiki.org/emacs/VisualRegexp

Saludos
 




===================
Gambas Básico
“Si no puedes explicar algo de forma sencilla, entonces es que tú no lo entiendes bien.” Albert Einstein
 
Shell - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Mostrar mensajes anteriores:    
 
Ocultar¡Este tema fue útil?

 

Elegir valoración:                       

Media de valoración Valoración mínima Valoración máxima Número de valoraciones
0.00 0 0 0
 

Publicar nuevo tema  Responder al tema  Página 1 de 1
 

Usuarios navegando en este tema: 0 registrados, 0 ocultos y 1 invitado
Usuarios registrados conectados: Ninguno


 
Lista de permisos
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas
No puede adjuntar archivos
No puede descargar archivos
No puede publicar eventos en el calendario