代码之家  ›  专栏  ›  技术社区  ›  nikolaz111

使用正则表达式分析javascript中函数之间的数据

  •  1
  • nikolaz111  · 技术社区  · 12 年前

    我有一根像下面这样的绳子

    旋转(32)平移(0,-284.35468),平移(8545,84)矩阵(d,f,g,s,g)平移(-58,88)

    每个函数可以用逗号或空格分隔。

    我想使用javascript正则表达式查找“translate”括号内的所有信息。因此,在上面的例子中,期望的结果是:

    ["0,-284.35468","8545,84","-58,88"]
    

    更具体地说,我想解析SVG规范中“g”标记的“tranform”属性中的信息。可以在这里找到 http://www.w3.org/TR/2011/REC-SVG11-20110816/coords.html#TransformAttribute

    非常感谢。

    1 回复  |  直到 12 年前
        1
  •  0
  •   nnnnnn    12 年前

    你可以试试这样的小东西:

    var s = "rotate(32) translate(0,-284.35468),translate(8545,84) matrix(d,f,g,s,g) translate(-58,88)";
    
    var re = /translate\(([^,]+,[^)]+)\)/g,
        results = [],
        c;
    
    while (c = re.exec(s))
        results.push(c[1]);
    
    // results is now ["0,-284.35468", "8545,84", "-58,88"]
    

    使用 .exec() method 在具有“g”标志的正则表达式上重复会找到连续的匹配项。

    在这种情况下,我们将获取数组中的第二个元素 .exec() 因为这将是字符串中与捕获括号中正则表达式部分匹配的部分。