嗨,才有可能正确地划分功能属性,使用正则表达式? 我想,在分割一个逗号分隔列表中的所有属性的表达。但是属性本身可能是一个数组或对象或东西,也可以包含逗号:划分功能属性
例如:
'string1','string2',sum(1,5,8), ["item1","item2","item3"], "string3" , {a:"text",b:"text2"}
这应该被分割为:
'string1'
'string2'
sum(1,5,8)
["item1","item2","item3"]
"string3"
{a:"text",b:"text2"}
这样的表达应该分头所有逗号,但不包含由(),{}或[]包围的逗号。
我试图这样在AS3 BTW 这里是一些代码,将拆分所有的逗号(这是ofcourse不是我想要的):
var attr:String = "'string1','string2',sum(1,5,8), ['item1','item2','item3'], 'string3' , {a:'text',b:'text2'}";
var result:Array = attr.match(/([^,]+),/g);
trace(attr);
for(var a:int=0;a<result.length;a++){
trace(a,result[a]);
}
这里是允许嵌套圆括号的表达式,但不是别人......
/([^,]+\([^\)]+\)|[^,]+),*/g
如果你想允许*嵌套*括号,括号或中括号,那么这相当于解析HTML/XML与正则表达式只是,你正在使用错误的工具。 – 2009-11-21 21:00:09
你是什么意思错误的工具? 我应该使用什么工具? 不正则表达式呢? – Aaike
正则表达式不足以支持嵌套。您需要更强大的代表下推自动机的东西。 – Suppressingfire