Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   split для поисковой строки (https://javascript.ru/forum/misc/7399-split-dlya-poiskovojj-stroki.html)

Бобр 30.01.2010 10:53

split для поисковой строки
 
В поисковых строках обычно когда надо найти фразу, то её берут в кавычки. Например:

word "big phrase"

Это значит, что надо найти слово word и фразу big phrase. Какое регулярное выражение в split надо использовать, чтобы преобразовывать такие поисковые запросы в массив строк?

Элементы массива должны быть такими:
1) word
2) big phrase

Как это сделать?

Kolyaj 30.01.2010 11:54

var str = 'word "big phrase" word "big phrase"', words = [];
str.replace(/"([^"]*)"|[\S]+/g, function(word, phrase) {
    words.push(phrase || word);
});
alert(words.join('\n'));
Например.

Бобр 30.01.2010 13:16

Цитата:

Сообщение от Kolyaj (Сообщение 42769)
var str = 'word "big phrase" word "big phrase"', words = [];
str.replace(/"([^"]*)"|[\S]+/g, function(word, phrase) {
    words.push(phrase || word);
});
alert(words.join('\n'));
Например.

Я воткнул это регулярное выражение в split, но почему-то помещает в массив только фразы, а отдельные слова - нет.

var str = 'word "big phrase" word "big phrase"';
  var words = str.split(/"([^"]*)"|[\S]+/g);
  alert(words.join('\n'));

Kolyaj 30.01.2010 14:21

Так не надо его в split засовывать.

Бобр 30.01.2010 14:37

Цитата:

Сообщение от Kolyaj (Сообщение 42793)
Так не надо его в split засовывать.

Просто хочется, чтобы коротко было.

Бобр 30.01.2010 16:28

Ещё вопрос. Если перед " забыть поставить пробел, то будет найдено слово
word"big
А если в конце фразы случайно поставить лишний пробел "big phrase ", то он так и останется. Как бы это в регулярном выражении поправить?

Kolyaj 30.01.2010 16:40

var str = 'word" big phrase " word "big phrase"', words = [];
str.replace(/"\s*([^"]*?)\s*"|[^\s"]+/g, function(word, phrase) {
    words.push(phrase || word);
});
alert(words.join('\n'));

Бобр 30.01.2010 21:46

Спасибо!
Где-бы мне подучиться регулярным выражениям?

Kolyaj 30.01.2010 21:48

http://yandex.ru/yandsearch?text=%D0...fx3&clid=46510
Кроме этой книги не нужно ничего.

PeaceCoder 30.01.2010 23:24

Цитата:

Сообщение от Kolyaj
Кроме этой книги не нужно ничего.

+1 Хорошая книга. начал читать и не мог остановится. Легкочитается и все понятно.


Часовой пояс GMT +3, время: 20:37.