akmm88 发表于 2009-1-18 17:32:50

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

昨天一个晚上,写了1组正则表达式来高亮AU3代码用于自己的BLOG,基本都OK了。
但是还差一个备注,判断起来比较难,因为是用JAVASCRIPT来操作的,所以判断语法比较困难。
有什么方法可以找出 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;这里是备注

请看上面代码,如何找出所有的备注呢?
;.* 会把第1行也匹配了。
^;*.*这样可以去掉第2行了。
其他的混合语句,实在想不出用什么方法。高手帮帮忙。什么方式的都可以,包括其他语言的或网页脚本的方式。


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

pusofalse 发表于 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中~

akmm88 发表于 2009-1-18 20:29:56

$var = "safdsafadfdf" ;"123"12345(;789";jd
$var = "safdsa;fadfdf" ;"123"12345(;789";jd

这样问题还很多,上面的2句就会出错了,该论坛的这个就没有这个问题

sxd 发表于 2009-1-18 21:07:53

何必这么麻烦 问一下 本站用的那个高亮插件的作者嘛

泡泡发电站

liongodmien 发表于 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

akmm88 发表于 2009-1-19 13:26:58

$a="$hwnd=$rehwnd;这里是备注"
$T = StringRegExp($a, '[^a-z](;.*)', 3, 1)

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

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

akmm88 发表于 2009-1-19 13:39:37

原帖由 sxd 于 2009-1-18 21:07 发表 http://www.autoitx.com/images/common/back.gif
何必这么麻烦 问一下 本站用的那个高亮插件的作者嘛

泡泡发电站

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

liongodmien 发表于 2009-1-19 15:26:05

原帖由 akmm88 于 2009-1-19 13:26 发表 http://www.autoitx.com/images/common/back.gif
$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后面只不过是一个字符串,并没有没有注释啊

liongodmien 发表于 2009-1-19 15:33:02

字母例子应该是:

$a = $b ;注释

要做这个必须对语法结构和正则两者皆熟悉才行,我只不过给出个参考,LZ你努力吧.

sxd 发表于 2009-1-19 15:36:45

原帖由 akmm88 于 2009-1-19 13:39 发表 http://www.autoitx.com/images/common/back.gif


研究正则比较重要,目的反而不重要了
我的意思是 你可以参考一下本站的这个插件
页: [1]
查看完整版本: 关于正则表达式(匹配au3备注),比较难。