2010-03-08 1 views
2

난 내가 파일을 조작하여 가지고 문자열과 정규 표현식에 대한 일치하는 항목을 찾기 위해 자바 스크립트/JScript의 작은 창문 스크립트를 쓰고 있어요.정규식 패턴을 시작 라인 번호로 제공하여 문자열과 일치시키는 방법. 끝 줄 번호. 그 안에서 검색이 수행되어야합니까?

나는 시작과 검색의 끝의 줄 번호를 알고있다. 그러나 나는 잠시 동안이 자리에 머물러있다.

답변

1

가장 좋은 방법은 정규 표현식을 복잡하게하지 않는 것입니다 - 당신이 당신의 정규식 능력이 매우 좋지 않은 경우 특히, 오히려 읽을 혼란 만들 수 있습니다. 먼저 간단한 작업 - 문서를 줄의 배열로 분할하고 줄을 고른 다음 정규 표현식을 수행하십시오. 이 방식으로 작은 문자열에서 정규 표현식을 실행하면 크기가 큰 텍스트 파일에서 훨씬 빨라질 수 있습니다.

// Assuming file is a FileSystemObject TextStream object: 
var lines = file.ReadAll().split("\r\n"); // split based on Windows newline 

// Arrays have zero-based indexes, so the line you need is your line number -1 
var match = lines[4].match(myRegEx);  // lines[4] is line 5 of the string 

// If you need it to span multiple lines, extract and join the lines you need: 
var specificLines = lines.splice(4, 6); // extract the 5th and 6th lines 
specificLines.match(myRegEx);    // don't forget the regex's /m modifier 

splice및 제외의 종료 인덱스 개까지 시작 인덱스에서 배열 항목을 반환합니다. 또한 경기의 특정 숫자 후 분할을 중지 split 방법에 limit 매개 변수를 제공 할 수 있습니다. 이렇게하면 필요한 파일이 끝까지 가깝지 않은 큰 파일에서 속도가 향상됩니다.

용어 :

2

그런 다음, 관심있는 비트 위의 모든 라인을 일치 캡처 그룹에서 원하는 부분을 캡처해야합니다. 예를 들어, 네 번째와 다섯 번째 라인을 추출,이 정규식을 사용할 수

/^(?:.*(?:\r\n|[\r\n])){3}((?:.*(?:\r\n|[\r\n])){2})/ 

당신이 그룹 # 1 캡처에서 사용할 수 있습니다 원하는 부분입니다. 이 같은 것을 보는

관련 문제