|
Página 1 de 1
|
Autor |
Mensaje |
Aleking
Usuario
Registrado: Marzo 2011
Mensajes: 21
Edad: 46
|
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.
|
#1 Viernes, 18 Marzo 2011, 02:00 |
|
|
shordi
Analista Programador
Registrado: Septiembre 2009
Mensajes: 4982
Edad: 64 Ubicación: Albacete
|
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
|
#2 Viernes, 18 Marzo 2011, 09:22 |
|
|
Aleking
Usuario
Registrado: Marzo 2011
Mensajes: 21
Edad: 46
|
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
|
#3 Viernes, 18 Marzo 2011, 10:04 |
|
|
shordi
Analista Programador
Registrado: Septiembre 2009
Mensajes: 4982
Edad: 64 Ubicación: Albacete
|
Re: Expresiones Regulares
Sorry, no conozco Perl.
Suerte
=================== No podemos regresar
|
#4 Viernes, 18 Marzo 2011, 10:27 |
|
|
jguardon
Administrador
Registrado: Septiembre 2009
Mensajes: 2708
Edad: 57 Ubicación: Granada
|
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"
|
#5 Viernes, 18 Marzo 2011, 16:54 |
|
|
Aleking
Usuario
Registrado: Marzo 2011
Mensajes: 21
Edad: 46
|
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.
|
#6 Sabado, 19 Marzo 2011, 00:48 |
|
|
jguardon
Administrador
Registrado: Septiembre 2009
Mensajes: 2708
Edad: 57 Ubicación: Granada
|
Re: Expresiones Regulares
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"
|
#7 Miercoles, 02 Julio 2014, 19:31 |
|
|
|
Temas parecidos
Temas parecidos
|
Página 1 de 1
|
Usuarios navegando en este tema: 0 registrados, 0 ocultos y 1 invitado Usuarios registrados conectados: Ninguno
|
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
|
|
|
|
|