如何使用通用方法用正则表达式替换模式?

How to replace pattern with regex using a general approach?

我正在尝试用正则表达式替换以下模式:

"id": 1,"name": "A green door","price": 12.50,"tags": "green"
"id": 1,"name": "A green door","price": 12.50,"tags": "green"
"id": 1,"name": "A green door","price": 12.50,"tags": "green"
"id": 1,"name": "A green door","price": 12.50,"tags": "green"

我希望它输出以下内容:

1,"A green door",12.50,"green"
1,"A green door",12.50,"green"
1,"A green door",12.50,"green"
1,"A green door",12.50,"green"

但是我希望表达式是通用的,因为值可能并不总是相同的,唯一永远不会改变的是模式。但是我一直在尝试像这样的不同表达方式:"(.*?)":

但一直得到错误的结果。如果有人能帮助我,我将不胜感激。

您可以使用String#split , Array#map and Array#join方法来完成。

var str = `"id": 1,"name": "A green door","price": 12.50,"tags": "green"
"id": 1,"name": "A green door","price": 12.50,"tags": "green"
"id": 1,"name": "A green door","price": 12.50,"tags": "green"
"id": 1,"name": "A green door","price": 12.50,"tags": "green"`;

var res = str.split('\n').map(function(v) {
  return v.split(',').map(function(v1) {
    return v1.split(':')[1].trim();
  }).join();
});

console.log(res);


或使用String#replace方法

var str = `"id": 1,"name": "A green door","price": 12.50,"tags": "green"
"id": 1,"name": "A green door","price": 12.50,"tags": "green"
"id": 1,"name": "A green door","price": 12.50,"tags": "green"
"id": 1,"name": "A green door","price": 12.50,"tags": "green"`;

var res = str.replace(/"\w+":\s*(?=.*?(?:[,|\n]|$))/g, '')

console.log(res);

这是一个非常简单的解决方案:

s/"[^"]*"\s*:\s*//g

如果您还想在字符串中允许反斜杠转义,我们可以更花哨一些:

s/"(?:[^"\]|\.)*"\s*:\s*//g