Соответствие 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);