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

学习中进步               ~
页: 1 2 3 4 [5] 6 7
查看完整版本: [正则练习]删除某行代码的注释部分