lchl0588
发表于 2010-11-8 15:48:32
回复 1# afan
#include <array.au3>
Local $text = '$s =' & "'2" & '"3;5 ' & "'bb&$a & " & '"a' & "' ;" & '"& $b;" ' & "' s a a注释;ad" & '" ' & "' "
$str = StringRegExp($text,'.*\S',3)
for $i = 0 to UBound($str) - 1
msgbox(0, "正则表达式选项 3 测试 " & $i, $str[$i],4)
Next
_ArrayDisplay($str)
不知道这样行不行?
afan
发表于 2010-11-8 16:39:44
回复 61# lchl0588
这里只是个例子,在实际应用中字符串可能是任何组合,所以,不能仅根据当前的测试字符来做匹配的依据,不然就没意义了(照你现在的思维,大可不必用正则,直接用StringTrimRight删除右边几个字符即可)。
lchl0588
发表于 2010-11-8 18:20:09
回复 62# afan
谢谢,但我出个题:
'$s =' & "'2" & '"3;5 ' & "'bb&$a & " & '"a' &"'y''h "' $b ;"h & '"()?>??,l;lfdfjdfkldsjfpeklmd& $hykhybym$b;" ' & "''' "" "'注'$b '释';ad" & '" ' & "' "
答案跟1楼一样!看以前的是否成立?
afan
发表于 2010-11-8 18:24:43
本帖最后由 afan 于 2010-11-8 18:32 编辑
回复afan
谢谢,但我出个题:
答案跟1楼一样!看以前的是否成立?
lchl0588 发表于 2010-11-8 18:20 http://www.autoitx.com/images/common/back.gif
这个字符串中的$s本身就是错误的定义…
一运行就知道了~ 错误的东东Au3本身就不接受(注意我一楼题解中的一句话:“首先你的代码必须在au3中能正确得到处理”)local $str = '$s =' & "'2" & '"3;5 ' & "'bb&$a & " & '"a' &"'y''h "' $b ;"h & '"()?>??,l;lfdfjdfkldsjfpeklmd& $hykhybym$b;" ' & "''' "" "'注'$b '释';ad" & '" ' & "' "
MsgBox(0, '原字符串', $Str)
阿祥
发表于 2010-11-8 18:26:43
{:face (356):}
lchl0588
发表于 2010-11-8 18:58:22
本帖最后由 lchl0588 于 2010-11-8 19:31 编辑
回复 64# afan
暂时抛开在AU3中是否成立的问题!在这里单从你的软件“Au3.REGHelper_0.9.8.1”中来讲:就是去掉1楼中右半部分!
那你看一看我测试的乱七八糟的代码------------汗!
哈哈,终于测试成功
lchl0588
发表于 2010-11-8 19:34:19
回复 64# afan
不知道你测试成功没?
我的答案没有放出来!!
afan
发表于 2010-11-8 19:44:42
本帖最后由 afan 于 2010-11-8 21:12 编辑
回复 66# lchl0588
可能你还没理解我的意思:
在工具的源字符串中应该是和Au3书写一样的格式,如 $a = 'xxx' 而非 "$a = 'xxx'" ,因为在这里,后者无任何意义,也非标题所注的“某行代码”。脱离了这个前提,此题也无任何意义~
afan
发表于 2010-11-8 19:56:12
本帖最后由 afan 于 2010-11-8 20:40 编辑
回复 67# lchl0588
我没有测试,原因如上所述,不知道你懂了我说的意思没~
说个简单应用吧,就拿我这个工具说话
如何得到在 Edit 编辑框中定义的变量的值,编辑框中的字符如下:
$a = 'a;1"2"3' ; " " & $b
还有个条件,不能用生成临时au3脚本再执行的方法(用户电脑中不一定安装了Autoit3,不想因此增加多余的文件)
如果觉得简单的话,还可以增加难度,变量嵌套:
$a = 'a;1"2"3' ; " " & $b
$b = $a & @ScriptDir & 2 * 5 ;'"'
最终目的:
将编辑框中声明的变量在表达式输入框中匹配,得到代入变量后的表达式,如表达式中的字符串为:
(?##$a)--(?##$b)--(?##$c)
代入变量后的表达式就应为:
a;1"2"3--a;1"2"3x:\xx\xxx10--(?##$c)
上面的(?##$c)不会被解析,因为$c没有声明。
最后因为有脚本输出功能,还需重新组合表达式为
$a & '--' & $b & '--(?##$c)'
当然,这只是简单的说明一下原理,实际过程会复杂得多(注:已发布的0.9.8.1版并不支持注释及变量嵌套)…
当然这与本主题讨论的问题没有必然关系,但本主题讨论的问题可以帮助实现上面的应用。
无名蜘蛛
发表于 2010-11-9 14:13:51
逐行读取 返回行数 和信息 正则判断修改指定行
binghc
发表于 2010-11-9 17:21:51
本帖最后由 binghc 于 2010-11-17 10:30 编辑
受本题启发,我写了个能删除au3中所有注释的脚本
http://www.autoitx.com/forum.php?mod=viewthread&tid=19568&page=1&extra=#pid230669
apxx
发表于 2010-11-12 08:11:43
让我也瞧瞧,学习中
binghc
发表于 2010-11-17 10:25:20
本帖最后由 binghc 于 2010-11-17 10:30 编辑
传说中的神话在这里!!100组括号嵌套!!!
**** Hidden Message *****
yeqing880
发表于 2010-11-17 11:32:54
什么东西这么牛?
terse
发表于 2010-11-17 11:35:53
学习中进步 ~