Página 1 de 1

Comprender el funcionamiento de StringRegExpReplace

Publicado: 31 Jul 2012, 12:34
por Enigma
Bueno chicos tengo un nuevo problema. El problema es que me he topado con esta función y la verdad es que me parece interesante, pero hay cosas que no entiendo. por ejemplo con el siguiente ejemplo:
Func Test3()
Local $sInput = '%CommonProgramFiles%\Microsoft Shared\'
Local $sOutput = StringRegExpReplace($sInput, '%([^%]*?)%', 'C:\\WINDOWS\\Some Other Folder$')
Display($sInput, $sOutput)
EndFunc
No entiendo muy bien lo de los símbolos, sé que tienen un significado en StringRegExp, pero sigo sin entenderlo. Lo que quiero más bien es aprender a dominar las expresiones regulares, ya que con la explicación y esos ejemplos no las entiendo muy bien. Gracias nuevamente :smt004

Re: Comprender el funcionamiento de StringRegExpReplace

Publicado: 19 Ago 2012, 10:30
por jamaro
Hola Enigma:

Las expresiones regulares son algo complejas (al menos para mí), pero además de los tutoriales que hay por internet sobre las expresiones regulares, siempre utilizo algún programa para hacer pruebas de las distintas expresiones antes de utilizarlas en mi código.

Una aplicación que utilizo, y creo que en este caso te puede ser útil es "RegExp Quick Tester" que puedes ver en este hilo del foro inglés:

http://www.autoitscript.com/forum/topic/27025-regexp-quick-tester/

En el caso de tu ejemplo, la expresión: StringRegExpReplace($sInput, '%([^%]*?)%', 'C:\\WINDOWS\\Some Other Folder$')

Sustituye:

%CommonProgramFiles%\Microsoft Shared\

por:

C:\WINDOWS\Some Other Folder$\Microsoft Shared\

para ello, la expresión de búsqueda: %([^%]*?)%, se devuelve lo que está entre paréntesis.
A su vez, se quiere que se devuelva el texto que está entre los símbolos %, en nuestro caso CommonProgramFiles

y lo sustituye por:
C:\\WINDOWS\\Some Other Folder$ (No sé si el $ se utiliza también en la función)

Desglosando un poco: %([^%]*?)%

[^%] Cualquier carácter que no sea %
*? * = Que se repita 0 o más veces. El ? después de *. indica que devuelva la parte más pequeña
( ) Devuelve lo que se encuentra entre paréntesis

% % Toma literalmente esos caracteres de la cadena en la que se busca


Espero haber aclarado un poco tu duda.

De todos modos, en este foro hay expertos en las expresiones regulares que seguro que lo pueden explicar mejor ;-)

Re: Comprender el funcionamiento de StringRegExpReplace

Publicado: 20 Ago 2012, 12:40
por Chefito
Te recomiendo que leas manuales y practiques mucho (mejor expresiones regulares en c, aunque casi cualquier lenguaje es parecido). Las expresiones regulares es un mundo.

Busca en el buscador del foro y te aparecerán muchísimos post con explicaciones y ejemplos que te ayudarán a comprenderlas mejor. Un ejemplo de Ximorro (hay muchos en el foro): http://www.emesn.com/autoitforum/viewto ... res#p12795

Un pequeño comienzo: http://es.wikipedia.org/wiki/Expresi%C3%B3n_regular

Como dice jamaro, practica con programas que resuelven expresiones regulares. En google hay muchísimos en línea.

Saludos.

Re: Comprender el funcionamiento de StringRegExpReplace

Publicado: 25 Ago 2012, 13:29
por Enigma
Pues muchas gracias a ambos. Practicare mucho esto, me parece bastante interesante conocerlo jeje. Gracias nuevamente :smt006