Как я могу использовать регулярные выражения и JavaScript, чтобы разбить следующую команду на токены: - PullRequest
1 голос
/ 26 сентября 2010
filter -n ""function(file) { return file.owner == "john"; }""

должен быть разобран в следующий массив:

[ 'filter',
  '-n',
  'function(file) { return file.owner == "john"; }' ]

1 Ответ

1 голос
/ 26 сентября 2010

Я не совсем уверен, как вы хотите обрабатывать двойные кавычки. Вы также хотите иметь возможность обрабатывать строки, содержащие только одну двойную кавычку на каждом конце, или они всегда удваиваются?

var string = 'filter -n ""function(file) { return file.owner == "john"; }""';
var regex  = /([^"\s]+)|""(.*?)""/g;
var match;
var result = [];

while (match = regex.exec(string)) {
    result.push(match[1] || match[2]);
}

alert(result);

Результат:

filter,-n,function(file) { return file.owner == "john"; }
...