wjscxs 发表于 2015-9-29 12:37:28

求个正则表达式(判断路径是否有变量)-已解决

本帖最后由 wjscxs 于 2015-9-29 16:23 编辑

比如路径:%USERPROFILE%\AppData\Local\Temp

这里含有系统宏变量:%USERPROFILE%

我这里就要把 %USERPROFILE% 区配出来,换成真实的名字,比如%USERPROFILE% = c:\windows\system32

区配后,真实路径为:c:\windows\system32\AppData\Local\Temp

还有可能路径不至一个宏,如路径D:\%USERPROFILE%\AppData\%systemuser%\Local\Temp

还有一种情况是 路径不合法 含有单数的% 号 都不合法!,不合法的路径就不处理!
xxx%xxx%XX%XX%% 4个%号
XXX%XXX%xxx%       3个%号,不合法路径

出来吧,高手!

laosan 发表于 2015-9-29 12:43:05

你这个为何不直接用StringReplace?

wjscxs 发表于 2015-9-29 12:48:27

dump first

eaglelin 发表于 2015-9-29 13:31:23

本帖最后由 eaglelin 于 2015-9-29 13:38 编辑

/%S+/%

大概就是这样

wjscxs 发表于 2015-9-29 13:37:22

回复 4# eaglelin

* 同等于{0,}

建议把基础知识学好.还是感谢您的回复

wjscxs 发表于 2015-9-29 13:49:35

回复 4# eaglelin

/%S+/%

首先第一个 /% 是本意字符
然后是S,字符
然后是+,相当于{1,}    意思是一次以上,即 S,SS,SSS,SSSS .....
然后结尾是 /% 本意字符

您的代码是

/%S/%
/%SS/%
/%SSS/%
................
..................
...................

N个S


再次感谢您,,您请去做其他事情吧,小弟另找别人。

afan 发表于 2015-9-29 13:59:44

(?<=^|\\)%\w+%(?=\\|$)

wua0550 发表于 2015-9-29 14:05:56

给你个我的想法吧~~先用IsInt(UBound(StringRegExp($str, '%', 3))/2)得出路径是否为合法,
建一个路径替换表,把%USERPROFILE% = c:\windows\system32 这些写到表里
然后用正则(%.+%)从合法路径里取出要替换的值,用for寻环把表里的值替换原值

wua0550 发表于 2015-9-29 14:06:04

给你个我的想法吧~~先用IsInt(UBound(StringRegExp($str, '%', 3))/2)得出路径是否为合法,
建一个路径替换表,把%USERPROFILE% = c:\windows\system32 这些写到表里
然后用正则(%.+%)从合法路径里取出要替换的值,用for寻环把表里的值替换原值

wjscxs 发表于 2015-9-29 16:21:52

RE: 求个正则表达式(判断路径是否有变量)

回复 7# afan

感谢,问题解决!
页: [1]
查看完整版本: 求个正则表达式(判断路径是否有变量)-已解决