Comprender el funcionamiento de StringRegExpReplace

Pregunta Sin Miedo no te cortes cualquier cosa para empezar - Autoit se comienza facilmente.Para Ordenes o Comandos sueltos. Ver nota como preguntar.
Responder
Enigma
Mensajes: 4
Registrado: 28 Jul 2012, 13:28

Comprender el funcionamiento de StringRegExpReplace

Mensaje 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
jamaro
Hacker del Foro
Mensajes: 253
Registrado: 03 Nov 2010, 23:04

Re: Comprender el funcionamiento de StringRegExpReplace

Mensaje 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 ;-)
Avatar de Usuario
Chefito
Profesional del Autoit
Mensajes: 2035
Registrado: 21 Feb 2008, 18:42
Ubicación: Albacete/Cuenca (España)

Re: Comprender el funcionamiento de StringRegExpReplace

Mensaje 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.
Cita vista en algún lugar de la red: En este mundo hay 10 tipos de personas, los que saben binario y los que no ;).
Enigma
Mensajes: 4
Registrado: 28 Jul 2012, 13:28

Re: Comprender el funcionamiento de StringRegExpReplace

Mensaje por Enigma »

Pues muchas gracias a ambos. Practicare mucho esto, me parece bastante interesante conocerlo jeje. Gracias nuevamente :smt006
Responder