【问题标题】:having some trouble with regex in as3as3中的正则表达式有一些问题
【发布时间】:2013-10-27 11:41:57
【问题描述】:

我想使用正则表达式从字符串中提取,为什么它不起作用? 从“10:13*12,20:23*22,60:36*432,...”,我想提取 10:13*12 然后 20:23*22 等等。然后,我想从 10:13*12、10、13 和 12 中提取,与 20:23*22 相同。

例如:levelObjs[i] = "10:13*12,20:23*22,60:36*432,..."

    var levelObjExp:RegExp = /(.*?),/ig;  
    var levelObjInfoExp:RegExp = /(\d+):(\d+)*(\d+)/ig;
    for(var i:int = 0; i < levelObjs.length; i++) {
    if(levelObjs[i] != 0){
        var levelObj:Object = levelObjExp.exec(levelObjs[i]);
        while (levelObj != null) {
            trace (levelObj[1]);
            var levelObjInfo:Object = levelObjInfoExp.exec(levelObj[1]);
            if (levelObjInfo != null) {
                var levelObjNum:int = levelObjInfo[1];
                var levelObjX:int = levelObjInfo[2];
                var levelObjY:int = levelObjInfo[3];
                trace(levelObjNum, levelObjX, levelObjY);
            }

            levelObj = levelObjExp.exec(levelObjs[i]);
        }
    }

}

此外,此代码需要在每一帧上,并且需要简单并尽可能少使用 CPU。正则表达式是否使用相对较多的 CPU 使用率?也许有更好的方法可以在不使用正则表达式的情况下做到这一点?

【问题讨论】:

    标签: regex actionscript-3 cpu


    【解决方案1】:

    可能是错误的正则表达式。

    修正以下行

    var levelObjInfoExp:RegExp = /(\d+):(\d+)*(\d+)/ig;
    

    var levelObjInfoExp:RegExp = /(\d+):(\d+)\*(\d+)/i;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-07-26
      • 1970-01-01
      • 1970-01-01
      • 2011-11-17
      • 1970-01-01
      • 2011-01-25
      相关资源
      最近更新 更多