Quantcast
Channel: iT邦幫忙
Viewing all articles
Browse latest Browse all 15645

【有缺項的正規表示式???】

$
0
0
(GESW-ZYXEL-VES-1724(PCPC-776))-776 0/23 1/1-VLAN/245
(GESW-ZYXEL-MGS-3712F-C(PCPC-626))-626 1/6-VLAN/245 1/10-VLAN/245
(GESW-ALCATEL-7450(PCPC-15))-15 1/2/3-VLAN/245 LAG/1-QINQ/123.245{Linkport:2/1/9;1/1/9;2/2/9}
(HPER-REDBACK SE-1200(PCPC-214))-214 LAG/PCPC_15_LAG1-QINQ/123.245{Linkport:10/1;12/4;12/9} 13/5-VLAN/1664

我有一個資料如上(有4行的資料)
我希望
每一行資料都能抓出5個資料,缺項補空值
這5個資料分別是

1.設備流水
2.左端 slot/port
3.左端 vlan 或是 qinq
4.右端 slot/port
5.右端 vlan 或是 qinq

有缺項補空值
我的程式如下

preg_match_all('/\(([A-Z]+-\d+)\)\)-\d+ L?A?G?\/?(\d+\/\d+\/?\d?|[A-Z]+_\d{2}_\w+|\d+\/\d+\/\d+)-?(vlan\/|qinq\/)(\d+.\d+|\d+)(\s+|\{.*\}\s+)(\d+\/\d+|lag\/\d+||\d+\/\d+\/\d+)-?(vlan\/|qinq\/)(\d+.\d+|\d+)/i',$f,$matches);
print_r($matches[1]);
echo "<hr>";
print_r($matches[2]);
echo "<hr>";
print_r($matches[4]);
echo "<hr>";
print_r($matches[6]);
echo "<hr>";
print_r($matches[8]);


跑出來的結果如下

Array ( [0] => PCPC-626 [1] => PCPC-15 [2] => PCPC-214 )
--------------------------------------------------------------------------------
Array ( [0] => 1/6 [1] => 1/2/3 [2] => PCPC_15_LAG1 )
--------------------------------------------------------------------------------
Array ( [0] => 245 [1] => 245 [2] => 123.245 )
--------------------------------------------------------------------------------
Array ( [0] => 1/10 [1] => LAG/1 [2] => 13/5 )
--------------------------------------------------------------------------------
Array ( [0] => 245 [1] => 123.245 [2] => 1664 )

結果沒有上面
第1筆的資料
因為第1筆的資料有缺項
它少了
3.左端 vlan 或是 qinq


請問這樣子我的 regex 要怎麼改呢
謝謝

Viewing all articles
Browse latest Browse all 15645

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>