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

求解电脑名正则(急)

[复制链接]
发表于 2008-12-11 17:11:54 | 显示全部楼层 |阅读模式
想了一天一夜了。没有满意的效果
IP address       NetBIOS Name     Server    User             MAC address      
------------------------------------------------------------------------------
192.168.0.54     THWB-JK                    <unknown>        00-19-db-6c-22-e9
192.168.0.63     A063                       <unknown>        00-19-db-6c-95-20
192.168.0.244    XIAOYU-T23                 <unknown>        00-02-2d-6f-dd-52
192.168.0.246    THWB-SEC         <server>  <unknown>        00-1b-fc-3b-f6-8c
192.168.0.248    THWB-PRI         <server>  <unknown>        00-0e-0c-dd-1a-01
192.168.0.249    SOSHU            <server>  <unknown>        00-e0-81-4a-00-55
192.168.0.252    SERVER-FILE      <server>  <unknown>        00-18-f3-a8-8c-14
192.168.0.253    ZZWLINE          <server>  <unknown>        00-0e-0c-dd-1a-06
192.168.0.245    THWB-JKJ         <server>  <unknown>        00-1b-fc-4b-7c-4a
192.168.0.247    JUJUMAO                    <unknown>        00-01-6c-03-3b-9b


求把里面的电脑名取出来的正则

我现在写的是
\w{4}\s{14}
但这样只能提取一部分。实在是头痛。高人帮解!!

[ 本帖最后由 mexiaoyuoo 于 2008-12-11 20:27 编辑 ]
发表于 2008-12-11 17:39:43 | 显示全部楼层
(?<=\s)\w+(-\w+)*(?=\s)

评分

参与人数 1金钱 +3 收起 理由
mexiaoyuoo + 3 还是要谢谢

查看全部评分

 楼主| 发表于 2008-12-11 18:07:34 | 显示全部楼层
原帖由 pcbar 于 2008-12-11 17:39 发表
(?


好像不对

取出来的数组是
[0] = NBT
[1] = name
[2] = scan
[3] = for
[4] = addresses
[5] = from
[6] = IP
[7] = address
[8] = NetBIOS
[9] = Name
[10] = Server
[11] = User
[12] = MAC
[13] = address
[14] = -JK
[15] = -e9
[16] = A063
[17] = -20
[18] = -T23
[19] = -52
[20] = -SEC
[21] = -8c
[22] = -PRI
[23] = -01
[24] = SOSHU
[25] = -55
[26] = -FILE
[27] = -14
[28] = ZZWLINE
[29] = -06
[30] = -JKJ
[31] = -4a
[32] = JUJUMAO
[33] = -9b

我想要的是取出
NetBIOS Name 那一列的电脑名
 楼主| 发表于 2008-12-11 18:11:28 | 显示全部楼层
我现在使用这个正则
\s[a-z0-9A-Z_-]{1,15}\s

能取出如下
[0] =  NBT
[1] =  scan
[2] =  addresses
[3] =
IP
[4] =  NetBIOS
[5] =  Server
[6] =  User
[7] =  MAC
[8] =  THWB-JK
[9] =  A063
[10] =  XIAOYU-T23
[11] =  THWB-SEC
[12] =  THWB-PRI
[13] =  SOSHU
[14] =  SERVER-FILE
[15] =  ZZWLINE
[16] =  THWB-JKJ
[17] =  JUJUMAO


但前面的
[0] =  NBT
[1] =  scan
[2] =  addresses
[3] =
IP
[4] =  NetBIOS
[5] =  Server
[6] =  User
[7] =  MAC
不是电脑名
如何排除
发表于 2008-12-11 18:13:54 | 显示全部楼层
这里完全可以不用什么正则。哪来的这么麻烦。
直接字符串分割还快。以前我就写过这个工具的提取代码。

评分

参与人数 1金钱 +2 收起 理由
mexiaoyuoo + 2 不错的思路

查看全部评分

 楼主| 发表于 2008-12-11 18:27:31 | 显示全部楼层
原帖由 sanhen 于 2008-12-11 18:13 发表
这里完全可以不用什么正则。哪来的这么麻烦。
直接字符串分割还快。以前我就写过这个工具的提取代码。



有无示例.
发表于 2008-12-11 19:48:16 | 显示全部楼层
不会正则,用字符串函数也可以做到,
$file = FileOpen("test.txt", 0)
$file1 = FileOpen("test1.txt", 1+8)

If $file = -1 OR $file1 = -1  Then
    MsgBox(0, "Error", "Unable to open file.")
    Exit
EndIf

While 1
    $line = FileReadLine($file)
    If @error = -1 Then ExitLoop
        if StringInStr($line,"192.168.") Then
                FileWriteLine($file1, StringStripWS(StringMid($line, 18, StringInStr($line,"<")-18) ,1+2))
        EndIf
       
Wend
FileClose($file)
FileClose($file1)

本帖子中包含更多资源

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

×

评分

参与人数 1金钱 +5 收起 理由
mexiaoyuoo + 5 我试试..不知道能不能以1维数组返回结果!!

查看全部评分

发表于 2008-12-12 09:33:10 | 显示全部楼层
用linux方法,输入到文本,awk,以空格为分隔符,取第二列的
发表于 2009-7-13 13:35:13 | 显示全部楼层
匹配IP
$ip = StringRegExp($a, '((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)', 4)
匹配mac
$mac = StringRegExp($a, '(\w{2}-\w{2}-\w{2}-\w{2}-\w{2}-\w{2})', 3)
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-5-5 09:45 , Processed in 0.088489 second(s), 26 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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