我有一个需要正确解析的文本文件。文本文件如下所示:
[header]
[header 2]
[ header3 ]
我可以通过这样做抓住这些标题
var expression:RegExp = /[ [a-z0-9 ]+ ]/igxm;
var items:Array = text.match(expression);
但我还想删除括号前后的空白区域,这样标题就可以与左边缘对齐。另外,对于[header3],我想删除括号内的空格,在“h”之前和“3”之后。什么是正确的正则表达式?提前谢谢。
语气答案 0 :(得分:1)
类似的东西:
var expression:RegExp = /\[[ ]*([a-z0-9 ]*[a-z0-9]+)[ ]*\]/igxm;
var header:String = text.replace(expression, "$1");
这假设您每行只有一个匹配(在每行上运行相同的正则表达式)。如果要遍历整个字符串,可以使用String.match()运行相同的正则表达式,然后使用上面的代码段来提取组。
答案 1 :(得分: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]
---------*/