找回密码
 加入
搜索
查看: 184|回复: 8

[AU3基础] mac正则提取【已解决】

[复制链接]
发表于 2024-5-30 08:32:16 | 显示全部楼层 |阅读模式
本帖最后由 redapple2008 于 2024-5-30 10:05 编辑

我只需要mac地址,如“51:7B:1D:46:09:88”这一部份,正则怎么处理?
 ; 正则匹配测试
#include <Array.au3>
Local $sInput = _ 
                "[计算机名]" & @CRLF & _
                "计算机名=CLIENT7" & @CRLF & _
                "[51:7B:1D:46:09:88]" & @CRLF & _
                "IP=10.9.8.7" & @CRLF & _
                "子网掩码=255.255.0.0" & @CRLF & _
                "网关=10.9.8.254" & @CRLF & _
                "首选DNS=10.9.3.22" & @CRLF & _
"[00:50:56:C0:00:01]" & @CRLF & _
                "IP=169.254.208.88" & @CRLF & _
                "子网掩码=255.255.0.0" & @CRLF & _
                "网关=" & @CRLF & _
                "首选DNS=" & @CRLF & _
                "备用DNS=" & @CRLF & _
                "[00:50:56:C0:00:08]" & @CRLF & _
                "IP=192.168.208.88" & @CRLF & _
                "子网掩码=255.255.0.0" & @CRLF & _
                "网关=" & @CRLF & _
                "首选DNS=" & @CRLF & _
                "备用DNS=" & @CRLF & _
                ""
;MsgBox(262144, "源字符串", $sInput)
Local $aRegExp = StringRegExp($sInput, "([0-9A-Fa-f]{2}:){5}[0-9A-Fa-f]{2}", 4)
_ArrayDisplay ($aRegExp)
Local $aMatch = 0
For $i = 0 To UBound($aRegExp) - 1
        $aMatch = $aRegExp[$i]
        For $j = 0 To UBound($aMatch) - 1
                MsgBox(Default, "RegExp 测试:   [" & $i & "] >> " & "[0]", $aMatch[$j])
        Next
Next

 楼主| 发表于 2024-5-30 10:05:07 | 显示全部楼层
群友解决了。
[0-9A-Fa-f]{2}(?:[:][0-9A-Fa-f]{2}){5}
 楼主| 发表于 2024-5-30 10:19:20 | 显示全部楼层
(?:[0-9A-Fa-f]{2}:){5}[0-9A-Fa-f]{2}
发表于 2024-5-30 13:10:48 | 显示全部楼层
[A-F0-9]{2}(:[A-F0-9]{2}){5}
 楼主| 发表于 2024-5-30 13:53:35 | 显示全部楼层
holley 发表于 2024-5-30 13:10
[A-F0-9]{2}(:[A-F0-9]{2}){5}

数组达不到楼主的要求。
发表于 2024-5-30 15:56:45 | 显示全部楼层
redapple2008 发表于 2024-5-30 13:53
数组达不到楼主的要求。
Local $aRegExp = StringRegExp($sInput, "\[([A-F0-9]{2}(:[A-F0-9]{2}){5})\]", 3)
发表于 2024-5-30 16:34:08 | 显示全部楼层
还是标志3直接点
Local $aRegExp = StringRegExp($sInput, "\[([A-F0-9]{2}(?::[A-F0-9]{2}){5})\]", 3)

Local $aMatches[UBound($aRegExp)][1]
For $i = 0 To UBound($aRegExp) - 1
        $aMatches[$i][0] = $aRegExp[$i]
Next
_ArrayDisplay($aMatches)
For $i = 0 To UBound($aMatches) - 1
        MsgBox(Default, "RegExp 测试:   [" & $i & "] >> ", $aMatches[$i][0])
Next

发表于 2024-5-30 21:21:24 | 显示全部楼层
这种固定格式字符串可以很简单
\[([\w:]+)

评分

参与人数 1金钱 +40 收起 理由
holley + 40 很给力!

查看全部评分

 楼主| 发表于 2024-5-31 08:26:29 | 显示全部楼层
afan 发表于 2024-5-30 21:21
这种固定格式字符串可以很简单
\[([\w:]+)

大神还是牛,这么简单就解决了。
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-6-25 14:37 , Processed in 0.088725 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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