我是regex的新手。我一直坚持这一点,无法找到解决这个问题的方法。
我在后端使用nodejs。有一个输出来清除正则表达式,
results: ["Comparing /path/uploads/vector-1474379968511.data with /path/x1.data."," + Squared l2 distance between representations: 2.067",
"Comparing /path/uploads/vector-1474379968511.data with /path/x2.data."," + Squared l2 distance between representations: 1.670",
"Comparing /path/uploads/vector-1474379968511.data with /path/x3.data."," + Squared l2 distance between representations: 1.686",
"Comparing /path/uploads/vector-1474379968511.data with /path/x4.data."," + Squared l2 distance between representations: 0.287"]
我需要所有x1.data,x2.data等的路径(" /path/x1.data" ;," /path/x2.data"等)对于每个x1.data,x2.data,...都有一个相应的"表示"值。路径需要具有这些值。换句话说,我需要以下内容:
/path/x1.data => 2.067
/path/x2.data => 1.670
/path/x3.data => 1.686
.................... => ......
答案 0 :(得分:-1)
" g" (全局)标志表示正则表达式可以匹配多次。 " m" (multiline)标志表示匹配整个字符串的开头和结尾而不是^
和$
,它们匹配行的开头和结尾。
^
行首([^ ]+)
匹配所有非空格字符,一次或多次。括号表示它将被捕获为自己的"组"供你以后使用。=>
文字文字(\d+\.\d+)
匹配一个或多个数字(0 - 9)。然后是一个文字点"。"。然后是一个或多个数字(0 - 9)。再次,它被捕获为自己的小组。$
行尾答案 1 :(得分:-1)
var input = ["Comparing /path/uploads/vector-1474379968511.data with /path/x1.data.", " + Squared l2 distance between representations: 2.067",
"Comparing /path/uploads/vector-1474379968511.data with /path/x2.data.", " + Squared l2 distance between representations: 1.670",
"Comparing /path/uploads/vector-1474379968511.data with /path/x3.data.", " + Squared l2 distance between representations: 1.686",
"Comparing /path/uploads/vector-1474379968511.data with /path/x4.data.", " + Squared l2 distance between representations: 0.287"];
var output = {};
var findPath = / with (.*)\.$/, findValue = /(\d+\.\d+)$/;
var path, value;
for (var i = 0, l = input.length; i < l; i++) {
path = input[i].match(findPath)[1];
i++; // move to next item
value = input[i].match(findValue)[1];
output[path] = value; // store however you like
}
console.log(output);
&#13;