请教个 两种正则 的 判断式 关于抓取 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: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:29 编辑
第一组
**** Hidden Message *****
第二种,正则: \S+
zghwelcome 发表于 2020-5-8 01:26
第一组
**** 本内容被作者隐藏 ****
:face (23):
这是高手。。。 本帖最后由 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: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: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]