0

ソーステキストは次のとおりです。

gi0/1 1G-Fiber -- -- -- -- Down -- -- Access
gi0/2 1G-Fiber -- -- -- -- Down -- -- 
gi0/3 1G-Fiber -- -- -- -- Down -- -- 
gi0/4 1G-Fiber -- -- -- -- Down -- -- 
gi0/5 1G-Fiber -- -- -- -- Down -- -- 

gi0/0/1 1G-Fiber -- -- -- -- Down -- --  Access
gi0/0/2 1G-Fiber -- -- -- -- Down -- -- 
gi0/0/3 1G-Fiber -- -- -- -- Down -- -- 
gi0/0/4 1G-Fiber -- -- -- -- Down -- -- 
gi0/0/5 1G-Fiber -- -- -- -- Down -- -- 

私の作業コードは次のとおりです。

var re = /(([\w]{2})[\/\d]{1,})\s+([\w\-\.\s]+){1,}[\r\n]/ig;
while ( (MyArray = re.exec(text)) != null ){

// ここでは、次の値を持つ配列を取得します (MyArray)

[0] [matched string]
[1] gi0/1 (gi0/0/1)
[2] gi
[3] 1G-Fiber
[4] -- 
[5] --
[6] --
[7] --
[8] Down
[9] --
[10] --
[11] Access (only for 1st and 6th row)

// しかし get (MyArray)

[0] [matched string]
[1] gi0/1 (gi0/0/1)
[2] gi
[3] "s" OR "empty"
}

オンラインの例 - http://regexr.com?31ilv

誰でも私を助けることができますか?

4

1 に答える 1

0
    <script type="text/javascript">
        var subject = "gi0/1 1G-Fiber -- -- -- -- Down -- -- Access";
        //var subject = "gi0/1 1G-Fiber -- -- -- -- Down -- --";
        var regex = /([^\s]*)\s([^\s]*)\s([^\s]*)\s([^\s]*)\s([^\s]*)\s([^\s]*)\s([^\s]*)\s([^\s]*)\s([^\s]*)\s*([^\s]*)/;
        var result = regex.exec(subject);
        document.write("<ol>");
        for (var i = 1; i < result.length; i++) {
            document.write("<li>'<i>" + result[i] + "<\/i>'<\/li>");
        }
        document.write("<\/ol>");
    </script>

ソース文字列に "Access" 接尾辞がない場合、この正規表現は最後の要素が空の配列を作成します。もう 1 つの戦略は、String.search 関数を使用してソース文字列を反復処理することです。

于 2012-07-18T18:05:00.627 に答える