2011-02-04 6 views
0

정확하게 구문 분석해야하는 텍스트 파일이 있습니다. 텍스트 파일은 다음과 같습니다공백, 액션 스크립트 및 정규식

[header] 
    [header 2] 
    [ header3 ] 

내가 너무

var expression:RegExp = /[ [a-z0-9 ]+ ]/igxm; 
var items:Array = text.match(expression); 

를 수행하여 이러한 헤더를 잡을 수 있습니다 그러나 나는 또한 앞에서와 괄호 후 공백을 제거하고 싶은, 그래서 헤더 수 왼쪽 가장자리에 맞 춥니 다. 또한, [header3]에 대해, "h"와 "3"뒤에 괄호 안의 공백을 제거하고 싶습니다. 무엇이 올바른 정규 표현식이 될 것이라고? 미리 감사드립니다. 같은

+0

당신이 'HEADER2'에 '헤더 2'로 변환해야합니까? – www0z0k

+0

번호. [header 2]가 맞습니다. – toneb

답변

1

뭔가 : 이것은 당신은 라인 당 하나의 일치를 가정

var expression:RegExp = /\[[ ]*([a-z0-9 ]*[a-z0-9]+)[ ]*\]/igxm; 
var header:String = text.replace(expression, "$1"); 

는 (각 라인을 통해 같은 정규 표현식을 실행). 전체 문자열을 실행하려면 String.match()를 사용하여 동일한 정규식을 실행 한 다음 위의 스 니펫을 사용하여 그룹을 추출 할 수 있습니다.

+0

고마워. 이 코드를 실행하도록하겠습니다. 나는 – toneb

+0

을 확실하게 업데이트 할 것이고, 나는 또 다른 모습을 가지고 regex를 바꾼다. (이후에 너무 열심히 후행 공백과 일치 할 것이기 때문이다.) –

+0

어이 클레멘트, 대괄호가 바꿔 치기되고있는 것 같다. 어떻게 그들을 유지할 수 있습니까? – toneb

1

와 릴 조금 다른 방법 :

var str:String = "[header]\n [header 2]\n [ header3 ] "; 
var tmpArr:Array = str.match(/\[\s*\w+\s*\d*\s*\]/gm); 
for (var i:int = 0; i < tmpArr.length; i++) { 
    tmpArr[i] = tmpArr[i].replace(/(\[)\s+(\S.+\S)\s+(\])/g, '$1$2$3'); 
} 
trace(tmpArr.join('\n')); 
/*-outputs- 
[header] 
[header 2] 
[header3] 
---------*/