Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Помогите, пожалуйста, составить регулярное выражение (https://javascript.ru/forum/misc/40445-pomogite-pozhalujjsta-sostavit-regulyarnoe-vyrazhenie.html)

sbudyakov 05.08.2013 23:36

Помогите, пожалуйста, составить регулярное выражение
 
Здравствуйте! 4 день не могу решить проблему! Мне нужно split'ом разбить строку на пробелы, но не разбивать их внутри кавычек. Привожу пример:
Исходная строка: (page1 page2 page3-"page3_1 page 3_2 page3_3" page4)
Должно разбиться на массив: (page1,page2,page3-"page3_1 page3_2 page3_3",page4)

И еще... Кавычки могут быть и одинарные и двойные. И перед последнй скобкой может стоять &. Подскажите как сделать, ну или хотя бы в каком направлении копать.

dmitriymar 05.08.2013 23:38

регулярные выражения сплит тоже принимает http://javascript.ru/String/split
ну и соответственно приведите свою попытку решения проблемы

sbudyakov 05.08.2013 23:46

В том то и дело, что кое как получается большим количеством функций (и то, коряво). А регуляркой даже приблизительно не получается. Пробовал разбивать по пробелам, а потом, перебирая массив, смотреть соседние строки. Если в них есть -" и ", то объединить. Просто, код на другом компьютере и я не могу его сейчас выложить сюда.

рони 06.08.2013 00:00

sbudyakov,
:-?
var str =  "(page1 page2 page3-'page3_1 page 3_2 page3_3' page4)";
alert(str.match(/\S+["'][\S\s]+?["']|\S+/g));
str = '(page1 page2 page3-"page3_1 page 3_2 page3_3" page4&)'
alert(str.match(/\S+["'][\S\s]+?["']|\S+/g));

sbudyakov 06.08.2013 00:09

рони,
Спасибо огромнейшее!!!

sbudyakov 07.08.2013 22:51

Вопрос можно считать закрытым. Хочу только сказать, что выражение немого доделал. Для поиска слов в кавычках без пробелов лучше использовать такое выражение: \S+?["'][\S\s]+?["']|\S+.


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