如何使用通用方法用正则表达式替换模式?
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
我正在尝试用正则表达式替换以下模式:
"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