Portal    Foro    Buscar    FAQ    Registrarse    Conectarse


Publicar nuevo tema  Responder al tema 
Página 1 de 1
 
 
Expresiones Regulares
Autor Mensaje
Responder citando   Descargar mensaje  
Mensaje Expresiones Regulares 
 
Hola:

A través del componente gb.pcre, se puede trabajar en gambas con expresiones regulares (RegExps), creando patrones y obteniendo cadenas que coinciden con dichos patrones. Según la descripción del componente en cuestión, este gestor de RegExps es compatible también con la forma que tiene Perl de manejarlas.

Bien, Perl permite realizar sustitución de caracteres de forma parecida a la siguiente: s/a/b/, que sustituye la primera aparición de la letra a por una b.

Mi duda es la siguiente: ¿En gambas también se puede hacer ese tipo de sustituciones? Me estoy volviendo loco y no consigo que reconozca de ninguna forma los metacaracteres de separación (/) que delimitan la cadena original de la sustituida.

Muchas gracias de antemano.
 



 
Aleking - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Expresiones Regulares 
 
utiliza la función replace:

cadena2=Replace(texto,"a","b")

Te hace la sustitución de las "a" de la variable texto por "b" y lo almacena en cadena2

Suerte
 




===================
No podemos regresar
 
shordi - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Expresiones Regulares 
 
Muchas gracias por la respuesta, pero lamentablemente no me sirve. Lo de sustituir a por b era una simplificación.

Si estoy buscando un patrón más complicado, digamos palabras capicúas (palíndormos) de longitud 4 formadas por dos números y dos letras, la función referida no sirve para nada.

Me interesa saber si la sustitución empleada en Perl es posible realizarla utilizando el componente gb.pcre.

Gracias de nuevo
 



 
Aleking - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Expresiones Regulares 
 
Sorry, no conozco Perl.

Suerte
 




===================
No podemos regresar
 
shordi - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Expresiones Regulares 
 
Hola Aleking

Por fin alguien que le gustan las Regexp!!

Bien, creo que tu problema es que no estás escapando convenientemente los metacaracteres con una contrabarra (\) delante. Pero aún así, nunca he probado en gambas si funcionan las sustituciones al estilo de Perl, pero hasta donde yo he probado funcionan de maravilla.

Por ejemplo, aunque no te va a servir para nada, en este fragmento de código analizo y extraigo unos contenidos de una página web:

IF InStr(S, "#calldata") AND InStr(S, "* user style:") < 0 THEN
        i = InStr(S, "id=\"calldata")
        j = InStr(S, "style=\"margin-top:1.5em;")
        IF j > i THEN calldata = Mid(S, i, (j - i))
        'callsign
        regex = NEW Regexp(calldata, "(?<=\\)\">).+(?=</b)")
        sArr.Add(regex.Text)
        'CSS class identifier
        regex = NEW Regexp(calldata, "(?<=calldata\\s\\.).+(?=\\s\\{display:b)")
        id = regex.Text
        
        REPEAT
            regex = NEW Regexp(calldata, "(?<=" & id & "\">).+(?=<)")
            TRY calldata = Mid(calldata, regex.Offset + Len(regex.Text), Len(calldata) - regex.Offset)
            sArr.Add(regex.Text)
        UNTIL regex.Text = NULL
        
        $qcall = sArr[0]
        $fname = sArr[1]
        $addr1 = sArr[2]
        $addr2 = sArr[3]
        $country = sArr[4]
        sArr.Clear
        
    ELSE
 


Fíjate que no todos los metacaracteres deben de ser escapados (en color verde).

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: Expresiones Regulares 
 
Un placer, don Jesús:

En primer lugar, muchas gracias por atender mi solicitud, acompañándola de ese fragmento de código, que la verdad sea dicha, me sobrepasa un poco. Sin embargo, alcanzo a entrever que en ningún lugar del mismo aparece sustitución alguna (aunque quizá me equivoque).

El caso es que he probado a "escapar" de todas las formas que me ha permitido mi corto entendimiento y no he dado con la correcta. Yo también pienso que el problema debe radicar ahí -de hecho estoy convencido- e incluso me atrevería a insinuar que es posible que ni siquiera haya solución.

He probado otras variantes de patrones y también he quedado muy satisfecho. Sin embargo, las malditas sustituciones se me siguen resistiendo.

Muchas gracias otra vez.
 



 
Aleking - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Expresiones Regulares 
 
Aleking escribió: [Ver mensaje]
Sin embargo, las malditas sustituciones se me siguen resistiendo.

Muchas gracias otra vez.


Aunque este post es bastante antiguo, dejo  esta información para futuras referencias. Las sustituciones son posibles usando Regex.Replace

http://gambaswiki.org/wiki/comp/gb.pcre/regexp/replace

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
Mostrar mensajes anteriores:    
 
OcultarTemas parecidos
Tema Autor Foro Respuestas último mensaje
No hay nuevos mensajes Expresiones Regulares... Aprovechando Awk! santijav Shell Scripting 2 Jueves, 07 Julio 2011, 23:17 Ver último mensaje
jsbsan
No hay nuevos mensajes Pregunta Sobre Expresiones Regulares Regexp dquinter General 1 Jueves, 26 Abril 2012, 19:21 Ver último mensaje
shordi
No hay nuevos mensajes Expresiones Regulares. Shell General 9 Lunes, 22 Diciembre 2014, 01:02 Ver último mensaje
Shell
No hay nuevos mensajes Find Y Problema Con Las Expresiones Regulares Shell Mundo Linux 4 Martes, 11 Diciembre 2018, 09:14 Ver último mensaje
Shell
 

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
Puede descargar archivos
No puede publicar eventos en el calendario



  

 

cron