我目前在Flex应用程序中有一个修复CSS文件中的破碎矩阵的操作,我们检查每一行并将其与模式匹配(这很好)但是我想用固定的矩阵替换矩阵。 / p>
-webkit-transform:matrix(1, -5.55112e-17,5.55112e-17, 1,43.996,241.213);
来自Wallaby(相信我,我也不想使用它)和我的正则表达式匹配要替换为matrix(1, 0, 0, 1
的前四个参数是
/matrix\(\d+.?\d+e?-?,\s?/gi
我不想在前四个论点中重复四次这样的表达,我怎么能以最好的方式做到这一点?
[编辑]
如果有更好的方式我仍然感兴趣的话,我已经想出了这个似乎正是我想要的东西。
matrix\(([^,]*,){4}
答案 0 :(得分:0)
如果您不关心原始值,那么为什么不使用:
/matrix\([^)]*\)/gi
匹配(
和)
之间的所有内容。
修改强>
您可以尝试:
s = 'matrix(1, -5.55112e-17,5.55112e-17, 1,43.996,241.213);';
s.match(/matrix\((?:[^,]+\s*,\s*){4}([^,]+)\s*,\s*([^,)]+)/);
然后使用匹配的组#1和#2,它们将是:
"43.996", "241.213"
答案 1 :(得分:0)
另一个解决方案可能是使用正面的lookbehind断言(如果你的正则表达式支持它,我不知道Flex使用哪个):
(?<=matrix[(])[^,]+(?:,[^,]+){3}
然后只需用1, 0, 0, 1
答案 2 :(得分:0)
所以这似乎做得最好(简单的搜索/替换)
matrix\(([^,]*,){4}
感谢您的回答。