对字符串运行两个正则表达式搜索会更有效吗:
public static var _isAttrib1:RegExp = /\w+ {0,}= {0,}\'[^']{0,}'/g;
public static var _isAttrib2:RegExp = /\w+ {0,}= {0,}\"[^']{0,}"/g;
或者结合这些并使用反向引用运行单个正则表达式?他们在这里提到,反向引用虽然效率不高。
如果你认为会有一个好处结合,你介意告诉我怎么做吗?我就是不能让两个正则表达式结合起来!由于某种原因,这搞砸了:
EDIT3:注意下面是错误的!有关信息,请参阅下面的 EDIT3。
var _isAttrib1:RegExp = /\w+ {0,}= {0,}(\'|\")[^']{0,}\1/g;
var arr:Array = _isAttrib1.exec("2222 s='jjj 111'2uuuus='dd' s='' ")
trace(arr) // s='jjj 111','
//but it should only give s='jjj 111' (array should have length 1 not 2).
谢谢!受此驱使有点便盆。
编辑:对不起,一些背景有助于:
这是在 actionscript AS3 中(不幸的是)。
我正在尝试从已转换为字符串并应用了一些格式(额外空格)的 XML 中干净地提取属性。例如,给出一个 c='2',d ='4',e ='5' 的数组。
Edit2:请注意,有时使用封装“而不是封装”。
Edit3:以下工作正常。我完全混淆了 RegExp.exec 返回的内容。请参阅此处,特别是 g(全局)部分,它是返回的第一个元素是匹配的内容。
var r:RegExp = /\w+ *= (['"])((?!\1).|\\1) \1/g;
var str:String = "sdsdsd w='2322' r=\"fdfd dfdfd dfd\"r=''";
var 结果:对象 = r.exec(str);
while (result != null) { trace ( result[0]) result = r.exec(str); } // w='2322' // r="fdfd dfdfd dfd" // r=''