2012-07-18 3 views
0

소스 텍스트로 remmember 모든 세포는 다음과 같습니다분할 테이블 행 및 정규 표현식

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

이 사람이 나를 도울 수 있습니까?

+0

공간에서 각 줄을 분할하지 않는 이유는 무엇입니까? 'MyArray = line.split ("") – gilly3

+0

regeexp를 사용하여 반복 시퀀스를 어떻게 기억하는지 알고 싶으므로 – alexx

+0

정규식은 http://regexr.com?31ilv의 정규식과 일치하지 않습니다. 이것을 시도하십시오 : http://regexr.com?31in9. 이것은 당신에게 3 개의 그룹으로 전체 경기를 제공합니다. 단일 정규식은 항상 같은 수의 그룹을 생성합니다. – gilly3

답변

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> 

원본 문자열에 "액세스"접미사가없는 경우이 정규식은 마지막 요소가 비어있는 배열을 만듭니다. 또 다른 전략은 String.search 함수를 사용하고 소스 문자열을 반복하는 것입니다.