css矩阵正则表达式前四个参数模式

时间:2013-09-30 12:13:08

标签: regex

我目前在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}

3 个答案:

答案 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}

Regular expression visualization

然后只需用1, 0, 0, 1

替换

Debuggex

的可视化

RegExr

演示

答案 2 :(得分:0)

所以这似乎做得最好(简单的搜索/替换)

matrix\(([^,]*,){4}

感谢您的回答。