2011-02-04 14 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

番号。 [ヘッダー2]は正しいです。 – toneb

答えて

1

何か:

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

これは、あなただけの1ラインずつの(あなたが各ラインの上に同じ正規表現を実行します)1試合を前提としています。文字列全体を実行したい場合は、String.match()で同じ正規表現を実行し、上記のスニペットを使用してグループを抽出することができます。

+0

ありがとうございました。このコードを実行させてください。私は – toneb

+0

を更新します。ちょうどもう一度見て、正規表現を変更しました。(それは後ろの空白にも熱望して一致するので) –

+0

ちょっとしたクレメントは、かっこが置き換えられているようです。どうすればそれらを維持できますか? – toneb

1

とlilのビット、他の方法:

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] 
---------*/ 
関連する問題