0

我目前在 Flex 应用程序中有一个修复 CSS 文件中损坏的矩阵的操作,我们检查每一行并将其与模式匹配(这很好),但我想用固定的矩阵替换矩阵。

我们吃饱了

-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}
4

3 回答 3

0

另一种解决方案可能是使用积极的后向断言(如果您的正则表达式支持它,我不知道 Flex 使用哪个):

(?<=matrix[(])[^,]+(?:,[^,]+){3}

正则表达式可视化

然后只需替换为1, 0, 0, 1

Debuggex可视化

RegExr演示

于 2013-09-30T14:42:43.410 回答
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"
于 2013-09-30T12:20:31.407 回答
0

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

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

不过感谢您的回答。

于 2013-10-03T09:04:41.060 回答