找回密码
 加入
搜索
查看: 3105|回复: 9

关于正则表达式(匹配au3备注),比较难。

[复制链接]
发表于 2009-1-18 17:32:50 | 显示全部楼层 |阅读模式
昨天一个晚上,写了1组正则表达式来高亮AU3代码用于自己的BLOG,基本都OK了。
但是还差一个备注,判断起来比较难,因为是用JAVASCRIPT来操作的,所以判断语法比较困难。
有什么方法可以找出 AU3的备注呢?
如:
[au3]$hCallBack2 = DllCallbackRegister("_TimerCallBackFunc", "none", "hwnd;int;int;dword")
;$hCallBack3 = DllCallbackRegister("_TimerCallBackFunc", "none", "hwnd;int;int;dword")
$iTimer1 = _WinAPI_SetTimer($hGUI, $TIMERID1, 1000, DllCallbackGetPtr($hCallBack));这里是备注
$a=2;备注
safdsafadfdf" ;"123"12345(;789";jd
safdsa;fadfdf" ;"123"12345(;789";jd
$hwnd=$rehwnd;这里是备注
[/au3]
请看上面代码,如何找出所有的备注呢?
;.* 会把第1行也匹配了。
^;*.*这样可以去掉第2行了。
其他的混合语句,实在想不出用什么方法。高手帮帮忙。什么方式的都可以,包括其他语言的或网页脚本的方式。


[ 本帖最后由 akmm88 于 2009-1-19 13:33 编辑 ]

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2009-1-18 19:06:19 | 显示全部楼层
$var = FileRead("A.txt")
$str = stringRegExp($var, '(?!.*")(?:[^"])?(;.*)(?<!")', 3)
For $a = 0 to Ubound($str) - 1
        msgBox(0, '', $str[$a])
Next
先将你的代码写到A.TXT中~
 楼主| 发表于 2009-1-18 20:29:56 | 显示全部楼层
[au3]$var = "safdsafadfdf" ;"123"12345(;789";jd
$var = "safdsa;fadfdf" ;"123"12345(;789";jd
[/au3]
这样问题还很多,上面的2句就会出错了,该论坛的这个就没有这个问题
发表于 2009-1-18 21:07:53 | 显示全部楼层
何必这么麻烦 问一下 本站用的那个高亮插件的作者嘛

泡泡发电站
发表于 2009-1-19 12:21:50 | 显示全部楼层
对应楼主的问题,写了下,不知道行不行

$a = '$hCallBack2 = DllCallbackRegister("_TimerCallBackFunc", "none", "hwnd;int;int;dword")' & @CRLF & _
                ';$hCallBack3 = DllCallbackRegister("_TimerCallBackFunc", "none", "hwnd;int;int;dword")' & @CRLF & _
                '$iTimer1 = _WinAPI_SetTimer($hGUI, $TIMERID1, 1000, DllCallbackGetPtr($hCallBack));这里是备注' & @CRLF & _
                '$a=2;备注' & @CRLF & '$var = "safdsafadfdf" ;"123"12345(;789";jd' & @CRLF & '$var = "safdsa;fadfdf" ;"123"12345(;789";jd'
                
$T = StringRegExp($a, '[^a-z](;.*)', 3, 1)

For $i = 0 To UBound($T) - 1
        MsgBox(0,0,$T[$i],2)
Next
 楼主| 发表于 2009-1-19 13:26:58 | 显示全部楼层
[au3]$a="$hwnd=$rehwnd;这里是备注"
$T = StringRegExp($a, '[^a-z](;.*)', 3, 1)

For $i = 0 To UBound($T) - 1
    MsgBox(0,0,$T[$i],2)
Next[/au3]

备注的情况种类太多了,;前面完全有可能是字母的啊
 楼主| 发表于 2009-1-19 13:39:37 | 显示全部楼层
原帖由 sxd 于 2009-1-18 21:07 发表
何必这么麻烦 问一下 本站用的那个高亮插件的作者嘛

泡泡发电站


研究正则比较重要,目的反而不重要了
发表于 2009-1-19 15:26:05 | 显示全部楼层
原帖由 akmm88 于 2009-1-19 13:26 发表
$a="$hwnd=$rehwnd;这里是备注"
$T = StringRegExp($a, '[^a-z](;.*)', 3, 1)
 
For $i = 0 To UBound($T) - 1
    MsgBox(0,0,$T[$i],2)
Next


备注的情况种类太多了,;前面完全有可能是字母的啊 ...


你举的这个例子,变量$a后面只不过是一个字符串,并没有没有注释啊
发表于 2009-1-19 15:33:02 | 显示全部楼层
字母例子应该是:

$a = $b ;注释

要做这个必须对语法结构和正则两者皆熟悉才行,我只不过给出个参考,LZ你努力吧.
发表于 2009-1-19 15:36:45 | 显示全部楼层
原帖由 akmm88 于 2009-1-19 13:39 发表


研究正则比较重要,目的反而不重要了

我的意思是 你可以参考一下本站的这个插件
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-9-23 08:25 , Processed in 0.085062 second(s), 25 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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