2016-06-24 4 views
0

Я пытаюсь заменить следующий шаблон с регулярным выражением:Как заменить шаблон регулярным выражением, используя общий подход?

"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" 

Однако я хочу, чтобы выражение было в общем виде, так как значения не всегда может быть одинаковым, единственное, что никогда не изменится, - это шаблон. Однако я пробовал разные выражения, подобные этому: "(.*?)":

Но продолжайте получать неправильный результат. Если бы кто-нибудь мог мне помочь, я бы очень признателен.

+0

Вы можете разместить некоторые из вещей, которые вы пробовали так что мы можем вам помочь? Я бы предпочел не просто дать вам ответ, не видя, что вы пробовали. (если это домашняя работа) – Chris

+0

Да, я пробовал следующие выражения: '[^:] *,' '("(. +?)" :) | ("(. +?) \")' и несколько других и обнаружил, что шаблон состоит в том, что он должен иметь ровно две кавычки + end в: и пространстве, но я довольно новичок в regex, и я не могу ввести этот шаблон в выражение. @Duck – user3116949

+0

Вместо того, чтобы публиковать другой ответ, проверьте другие 2, которые были предоставлены - они выглядят так, как будто они достигают того, чего вы хотите. Кроме того, в следующий раз проверьте [Regex 101] (https://regex101.com/) для очень полезного визуального отладчика. Удачи! – Chris

ответ

1

Вы можете использовать String#split, Array#map и 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);

2

Her е довольно простое решение:

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

Если вы хотите, чтобы обеспечить обратный слеш в строках, мы можем получить немного больше фантазии:

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