正则表达式匹配nodejs中的两个值

时间:2016-09-20 16:18:50

标签: regex node.js

我是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

.................... => ......

2 个答案:

答案 0 :(得分:-1)

/^([^ ]+) => (\d+\.\d+)$/gm

" 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;
&#13;
&#13;