找回密码
 加入
搜索
查看: 2902|回复: 7

[AU3基础] 向各位同学求助一个关于提取au3脚本变量的问题.(已解决)

[复制链接]
发表于 2016-4-14 16:06:23 | 显示全部楼层 |阅读模式
本帖最后由 tubaba 于 2016-4-18 09:56 编辑

如何才能正确提取au3脚本中的变量呢?包括此变量的赋值.想了快一个月了,还是没想出来.所以没办法才来发贴求助.
Global $aKeyWord = StringSplit($KeyWordStr, ',', 2)
Global $aFuncs[1][1], $aALLFuncs[1][1]
Global Const $tagNMSELCHANGE = $tagNMHDR & _
";struct;word BegYear;word BegMonth;word BegDOW;word BegDay;word BegHour;word BegMinute;word BegSecond;word BegMSeconds;endstruct;" & _
"struct;word EndYear;word EndMonth;word EndDOW;word EndDay;word EndHour;word EndMinute;word EndSecond;word EndMSeconds;endstruct"
Global Const $FILE_SHARE_DELETE = 0x00000004
Global Const $FILE_SHARE_READWRITE = BitOR($FILE_SHARE_READ, $FILE_SHARE_WRITE)
Global Const $FILE_SHARE_ANY = BitOR($FILE_SHARE_READ, $FILE_SHARE_WRITE, $FILE_SHARE_DELETE)
比如上面的代码,想依次提取每个变量的值.
$aKeyWord = StringSplit($KeyWordStr, ',', 2)
$aFuncs[1][1]
$aALLFuncs[1][1]
$tagNMSELCHANGE = $tagNMHDR & _
";struct;word BegYear;word BegMonth;word BegDOW;word BegDay;word BegHour;word BegMinute;word BegSecond;word BegMSeconds;endstruct;" & _
"struct;word EndYear;word EndMonth;word EndDOW;word EndDay;word EndHour;word EndMinute;word EndSecond;word EndMSeconds;endstruct"

$FILE_SHARE_ANY = BitOR($FILE_SHARE_READ, $FILE_SHARE_WRITE, $FILE_SHARE_DELETE)
应该使用什么正则比较好呢
 楼主| 发表于 2016-4-14 16:07:51 | 显示全部楼层
回复 1# tubaba


    应该跟afan版主的精简脚本程序的那个精减变量功能差不多,可我想不明白是怎么做到的
发表于 2016-4-15 16:53:23 | 显示全部楼层
本帖最后由 alwaystick 于 2016-4-15 16:54 编辑

回复 1# tubaba
先用我的AutoIt变量提取器把变量提取出来吧。至于赋值,我的工具就做不到了,你可以试试看正则表达式。
下载我的AutoIt变量提取器
 楼主| 发表于 2016-4-16 22:02:20 | 显示全部楼层
简单的/$/w+并不能应付所有情况,考虑过型似变量的字符串包含在文本字符串之内的情况吗
 楼主| 发表于 2016-4-18 09:56:22 | 显示全部楼层
自己解决了.根据逗号的位置来分割变量,在文本字符串内,在小括号内,在中括号内的逗号不做分割依据,找到并替换为其它字符.脚本中剩下的逗号将会是变量分隔的依据.

1.相邻双引号或单引号替换其它符号
2.加入字符串起止标志
3.将起始标志前的成对相邻双引号或成对相邻单引号移动到起始标志后
4.文本字符串内的逗号替换为chr(1)
5.数组中括号内的逗号替换为chr(1)
6.每行第一个(前的逗号替换为chr(4)
7.每行)后(前的逗号替换为chr(4)
8.每行最后一个)后的逗号替换为chr(4)
变量包括它的赋值将会以chr(4)分割.
9.匹配行尾带有& _的连接
发表于 2018-10-17 18:51:30 | 显示全部楼层
(?si)(?=Global).*?\s(\$[^=,]+?)[=,](.+?)(?=$|Global)
发表于 2018-10-17 19:06:46 | 显示全部楼层
練習
Global $String1 = "This is a String, Without anything", $String2 = 'This is a String With "$"', $String3 = "This is a String With $", $String4 = 'This is a String With a "$" by ' & Chr(36) & "'s ASCII Code..."

(\$[^=]+?)=(.+?)(?=, \$|\sby)
发表于 2018-10-17 19:20:40 | 显示全部楼层
練習
(?si)(?=Global).+?(\$.+?)(?=$|Global)
結果
[0] = $aKeyWord = StringSplit($KeyWordStr, ',', 2)
[1] = $aFuncs[1][1], $aALLFuncs[1][1]             這裡失敗,無法分開取
[2] = $tagNMSELCHANGE = $tagNMHDR & _
";struct;word BegYear;word BegMonth;word BegDOW;word BegDay;word BegHour;word BegMinute;word BegSecond;word BegMSeconds;endstruct;" & _
"struct;word EndYear;word EndMonth;word EndDOW;word EndDay;word EndHour;word EndMinute;word EndSecond;word EndMSeconds;endstruct"
[3] = $FILE_SHARE_DELETE = 0x00000004
[4] = $FILE_SHARE_READWRITE = BitOR($FILE_SHARE_READ, $FILE_SHARE_WRITE)
[5] = $FILE_SHARE_ANY = BitOR($FILE_SHARE_READ, $FILE_SHARE_WRITE, $FILE_SHARE_DELETE)

评分

参与人数 1金钱 +10 收起 理由
tubaba + 10 赞一个!

查看全部评分

您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-11-16 15:32 , Processed in 0.074793 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表