正则表达式用于从转换矩阵中选择元素

Regex for selecting elements from transform matrix

本文关键字:选择 元素 用于 转换 正则表达式      更新时间:2023-09-26

我有一串样式转换

,如下所示:

matrix(0.312321, -0.949977, 0.949977, 0.312321, 0, 0)

如何形成包含此矩阵元素的数组?如何为此编写正则表达式的任何提示?

我会这样做...

// original string follows exactly this pattern (no spaces at front or back for example)
var string = "matrix(0.312321, -0.949977, 0.949977, 0.312321, 0, 0)";
// firstly replace one or more (+) word characters ('w) followed by `(` at the start (^) with a `[`
// then replace the `)` at the end with `]`
var modified = string.replace(/^'w+'(/,"[").replace(/')$/,"]");
// this will leave you with a string: "[0.312321, -0.949977, 0.949977, 0.312321, 0, 0]"
// then parse the new string (in the JSON encoded form of an array) as JSON into a variable
var array = JSON.parse(modified)
// check it is correct
console.log(array)

这是一种方法。 使用正则表达式解析出数字部分,然后使用 split() 方法:

var s = "matrix(0.312321, -0.949977, 0.949977, 0.312321, 0, 0)";
s.match(/[0-9., -]+/)[0].split(", "); // results in ["0.312321", "-0.949977", "0.949977", "0.312321", "0", "0"]

试试这个:

/^matrix'(([+'-'d.]+), ([+'-'d.]+), ([+'-'d.]+), ([+'-'d.]+), ([+'-'d.]+), ([+'-'d.]+)')$/
    .exec(str).slice(1);

演示

可能是

这样的:

var string = "matrix(0.312321, -0.949977, 0.949977, 0.312321, 0, 0)";
var array = string.replace(/^.*'((.*)')$/g, "$1").split(/, +/);

请注意,以这种方式数组将包含字符串。如果你想要实数,一个简单的方法是:

array = array.map(Number);

你的 js 引擎需要支持 map 或者有一个垫片(当然你也可以手动转换它们)。