kk_lee69 发表于 2020-5-7 23:03:56

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

本帖最后由 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

想要 變成 數組



第二種

網路目的地               網路遮罩         閘道          介面       計量
          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

變成 數組

[網路目的地,網路遮罩,閘道,介面,計量]



懂正則的朋友 幫忙一下謝謝

yuantian 发表于 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), '其中元素为: ' & $aSRE)
_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), '其中元素为: ' & $aSRE)
_ArrayDisplay($aSRE, UBound($aSRE))






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

zghwelcome 发表于 2020-5-8 01:26:37

本帖最后由 zghwelcome 于 2020-5-8 01:29 编辑

第一组
**** Hidden Message *****

第二种,正则: \S+


yuantian 发表于 2020-5-8 07:14:47

zghwelcome 发表于 2020-5-8 01:26
第一组
**** 本内容被作者隐藏 ****



:face (23):
这是高手。。。

afan 发表于 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))



floor6ggg 发表于 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), '其中元素为: ' & $aSRE)
_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), '其中元素为: ' & $aSRE)
_ArrayDisplay($aSRE, UBound($aSRE))

shqf 发表于 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)

kk_lee69 发表于 2020-5-11 11:10:52

好的 感謝回復我來測試看看
页: [1]
查看完整版本: 请教个 两种正则 的 判断式 关于抓取 ROUTE PRINT 后的资料