找回密码
 加入
搜索
查看: 2116|回复: 7

[网络通信] 请教个 两种正则 的 判断式 关于抓取 ROUTE PRINT 后的资料

[复制链接]
发表于 2020-5-7 23:03:56 | 显示全部楼层 |阅读模式
本帖最后由 kk_lee69 于 2020-5-7 23:05 编辑

请教个 两种正则 的 判断式 关于抓取 ROUTE PRINT 后的资料

1. 資料格式 如下:

25...00 ff 87 0a 2c 43 ......Kaspersky Security Data Escort Adapter #2
18...00 24 8c 58 37 79 ......Atheros AR8121/AR8113/AR8114 PCI-E Ethernet Controller

想要 變成 數組
[25,00 ff 87 0a 2c 43,Kaspersky Security Data Escort Adapter #2]
[18,00 24 8c 58 37 79,Atheros AR8121/AR8113/AR8114 PCI-E Ethernet Controller]

第二種

網路目的地                 網路遮罩         閘道          介面       計量
          0.0.0.0          0.0.0.0      192.168.1.1    192.168.1.118     20
        127.0.0.0        255.0.0.0            在連結上         127.0.0.1    306

變成 數組

[網路目的地,網路遮罩,閘道,介面,計量]
[0.0.0.0,0.0.0.0,192.168.1.1,192.168.1.118,20]
[127.0.0.0,255.0.0.0,在連結上,127.0.0.1,306]

懂正則的朋友 幫忙一下  謝謝
发表于 2020-5-8 00:19:19 | 显示全部楼层
本帖最后由 yuantian 于 2020-5-8 00:50 编辑

正则小白过来参加讨论啦。。。
第一种,表达式这样可好?
([^\.|\n]+)
### 友情提示:本脚本由 Au3.REHelper 于 2020/05/08 00:48 自动生成,不保证其正确性,请自行测试 ###
#include <Array.au3>
Local $sSource = _
'25...00 ff 87 0a 2c 43 ......Kaspersky Security Data Escort Adapter #2' & @CRLF & _
'18...00 24 8c 58 37 79 ......Atheros AR8121/AR8113/AR8114 PCI-E Ethernet Controller'
;~MsgBox(0, '源字符串', $sSource)
Local $aSRE = StringRegExp($sSource, '([^\.|\n]+)', 3)
If Not @Error Then MsgBox(0, '匹配数量: ' & UBound($aSRE), '其中[0]元素为: ' & $aSRE[0])
_ArrayDisplay($aSRE, UBound($aSRE))

第二种,表达式这样可好??
(\S+)
### 友情提示:本脚本由 Au3.REHelper 于 2020/05/08 00:50 自动生成,不保证其正确性,请自行测试 ###
#include <Array.au3>
Local $sSource = _
                '網路目的地                 網路遮罩         閘道          介面       計量' & @CRLF & _
                '          0.0.0.0          0.0.0.0      192.168.1.1    192.168.1.118     20' & @CRLF & _
                '        127.0.0.0        255.0.0.0            在連結上         127.0.0.1    306'
;~MsgBox(0, '源字符串', $sSource)
Local $aSRE = StringRegExp($sSource, '(\S+)', 3)
If Not @Error Then MsgBox(0, '匹配数量: ' & UBound($aSRE), '其中[0]元素为: ' & $aSRE[0])
_ArrayDisplay($aSRE, UBound($aSRE))





然后弄出一维数组后,二次拆分为二维数组。。我只能想到这些。
更进一步的,待A版出马


本帖子中包含更多资源

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

×

评分

参与人数 1金钱 +100 收起 理由
kk_lee69 + 100 赞一个!

查看全部评分

发表于 2020-5-8 01:26:37 | 显示全部楼层
本帖最后由 zghwelcome 于 2020-5-8 01:29 编辑

第一组
游客,如果您要查看本帖隐藏内容请回复


第二种,正则: \S+


评分

参与人数 1金钱 +150 收起 理由
kk_lee69 + 150 赞一个!

查看全部评分

发表于 2020-5-8 07:14:47 | 显示全部楼层
zghwelcome 发表于 2020-5-8 01:26
第一组
**** 本内容被作者隐藏 ****


这是高手。。。
发表于 2020-5-8 09:04:08 | 显示全部楼层
本帖最后由 afan 于 2020-5-8 09:17 编辑

第一种,先用替换模式,将以下表达式替换为“,”  再匹配整行即可
Highlight code by AuREHelper
\h*\.{2,}\h*
匹配整行
Highlight code by AuREHelper
\V+



第二种,也是先用替换模式再匹配模式,如
Highlight code by AuREHelper
(?m)^,?(\V+)
#include <Array.au3>
Local $sSource = _
                '          0.0.0.0          0.0.0.0      192.168.1.1    192.168.1.118     20' & @CRLF & _
                '        127.0.0.0        255.0.0.0            在連結上         127.0.0.1    306'
Local $aSRE = StringRegExp(StringRegExpReplace($sSource, '\h+', ','), '(?m)^,?(\V+)', 3)
_ArrayDisplay($aSRE, UBound($aSRE))



评分

参与人数 1金钱 +115 收起 理由
kk_lee69 + 115 感謝老大回復

查看全部评分

发表于 2020-5-8 12:04:33 | 显示全部楼层
本帖最后由 floor6ggg 于 2020-5-8 12:06 编辑

来2个懒人不动脑模拟格式的写法:
### 友情提示:本脚本由 Au3.REHelper 于 2020/05/08 11:53 自动生成,不保证其正确性,请自行测试 ###
#include <Array.au3>
Local $sSource = _
                '25...00 ff 87 0a 2c 43 ......Kaspersky Security Data Escort Adapter #2' & @CRLF & _
                '18...00 24 8c 58 37 79 ......Atheros AR8121/AR8113/AR8114 PCI-E Ethernet Controller'
;~MsgBox(0, '源字符串', $sSource)
Local $aSRE = StringRegExp($sSource, '(.*?)\.+(.*?)\.+(.*)', 3)
If Not @Error Then MsgBox(0, '匹配数量: ' & UBound($aSRE), '其中[0]元素为: ' & $aSRE[0])
_ArrayDisplay($aSRE, UBound($aSRE))
### 友情提示:本脚本由 Au3.REHelper 于 2020/05/08 12:02 自动生成,不保证其正确性,请自行测试 ###
#include <Array.au3>
Local $sSource = _
                '網路目的地                 網路遮罩         閘道          介面       計量' & @CRLF & _
                '          0.0.0.0          0.0.0.0      192.168.1.1    192.168.1.118     20' & @CRLF & _
                '        127.0.0.0        255.0.0.0            在連結上         127.0.0.1    306'
;~MsgBox(0, '源字符串', $sSource)
Local $aSRE = StringRegExp($sSource, '(?:^|\s+)(.*?)\s+(.*?)\s+(.*?)\s+(.*?)\s+(.*?)(?:\v+|$)', 3)
If Not @Error Then MsgBox(0, '匹配数量: ' & UBound($aSRE), '其中[0]元素为: ' & $aSRE[0])
_ArrayDisplay($aSRE, UBound($aSRE))

评分

参与人数 1金钱 +150 收起 理由
kk_lee69 + 150 赞一个!

查看全部评分

发表于 2020-5-9 12:02:15 | 显示全部楼层
本帖最后由 shqf 于 2020-5-9 12:06 编辑

根据楼主的要求,只需先正则替换,第一串连续的点替换为“,”,第2 串是连续的水平空白符替换为“,”,再正则一行为1 个数组元素即可。
#include <Array.au3>
Local $sSource1 = _
                '25...00 ff 87 0a 2c 43 ......Kaspersky Security Data Escort Adapter #2' & @CRLF & _
                '18...00 24 8c 58 37 79 ......Atheros AR8121/AR8113/AR8114 PCI-E Ethernet Controller'
Local $aSRE1 = StringRegExp(StringRegExpReplace($sSource1, "\.+", ","),"(?m).+",3)
_ArrayDisplay($aSRE1)
Local $sSource2 = _
                '網路目的地                 網路遮罩         閘道          介面       計量' & @CRLF & _
                '          0.0.0.0          0.0.0.0      192.168.1.1    192.168.1.118     20' & @CRLF & _
                '        127.0.0.0        255.0.0.0            在連結上         127.0.0.1    306'
Local $aSRE2 = StringRegExp(StringRegExpReplace($sSource2, '\h+', ','), '(?m).+', 3)
_ArrayDisplay($aSRE2)

评分

参与人数 1金钱 +150 收起 理由
kk_lee69 + 150 赞一个!

查看全部评分

 楼主| 发表于 2020-5-11 11:10:52 | 显示全部楼层
好的 感謝回復  我來測試看看
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-5-19 20:19 , Processed in 0.100258 second(s), 29 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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