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
