Соответствие Regexp списка строк кавычек - некорректно

в Javascript, следующее:

var test = '"the quick" "brown fox" "jumps over" "the lazy dog"';
var result = test.match(/".*?"/g);
alert(result);

дает "быструю", "коричневую лису", "перескакивает", "ленивую собаку"

Я хочу, чтобы каждый согласованный элемент не был определен: быстрый, коричневый лис, прыгает, ленивая собака

что это будет делать regexp?

Ответ 1

Это работает:

var test = '"the quick" "brown fox" "jumps over" "the lazy dog"';
var result = test.match(/[^"]+(?=(" ")|"$)/g);
alert(result);

Примечание. Это не соответствует пустым элементам (т.е. ""). Кроме того, он не будет работать в браузерах, которые не поддерживают JavaScript 1.5 (lookaheads - это функция 1.5).

Подробнее см. http://www.javascriptkit.com/javatutors/redev2.shtml.

Ответ 2

Это не одно регулярное выражение, а два простых регулярных выражения.

var test = '"the quick" "brown fox" "jumps over" "the lazy dog"';

var result = test.match(/".*?"/g);
// ["the quick","brown fox","jumps over","the lazy dog"]

result.map(function(el) { return el.replace(/^"|"$/g, ""); });
// [the quick,brown fox,jumps over,the lazy dog] 

Ответ 3

grapefrukt отвечает также. Я бы использовал вариант Дэвида

match(/[^"]+(?=("\s*")|"$)/g)

поскольку он правильно обрабатывает произвольные количества пробелов и вкладки между строками, что мне и нужно.

Ответ 4

Вы можете использовать метод javascript replace(), чтобы отключить их.

var test = '"the quick" "brown fox" "jumps over" "the lazy dog"';

var result = test.replace(/"/, '');

Есть ли еще больше, чем просто избавиться от двойных кавычек?

Ответ 5

Это то, что я буду использовать в actionscript3:

var test:String = '"the quick" "brown fox" "jumps over" "the lazy dog"';
var result:Array = test.match(/(?<=^"| ").*?(?=" |"$)/g);
for each(var str:String in result){
    trace(str);
}

Ответ 6

Для сопоставления содержимого между парами простых котировок и двойными кавычками, которые заботятся об экранированных.

Поскольку поисковая система меня сначала загнала, я действительно хотел бы ориентировать людей, которые хотят проверить пары котировок на более общий вопрос: fooobar.com/questions/506302/....

Регулярное выражение получит полное содержимое между хорошо сформированными парами кавычек, например '"What\ up?"', например, которые не входят в комментарий кода, например // Comment. или /* Comment. */.

Ответ 7

Здесь один из способов:

var test = '"the quick" "brown fox" "jumps over" "the lazy dog"';
var result = test.replace(/"(.*?)"/g, "$1");
alert(result);