Показать сообщение отдельно
  #22 (permalink)  
Старый 06.08.2014, 23:37
Кандидат Javascript-наук
Отправить личное сообщение для riva Посмотреть профиль Найти все сообщения от riva
 
Регистрация: 24.06.2013
Сообщений: 115

Aetae, Спасибо! Почитал...Но честно сказать не понял.
regexp = /a+(b+(c+))/g
str = "abc aabbcc"

Цитата:
[ 'abc', 'bc', 'c', index: 0, input: 'abc aabbcc' ]
[ 'aabbcc', 'bbcc', 'cc', index: 4, input: 'abc aabbcc' ]
Почему в первый раз не выводится 'bcc' вместо 'bc'?

И у меня ещё маленький вопрос, который я объясню на ужатой миниатюре.
var str = 'DDD/**com m\nents*/ XXX /**comments*/III'
var re = /\/\*{1,2}([\s\S]+)\*\//g;

Строка иллюстрирует два блока комментариев с текстом между ними.
Выражение, в моем понимании, означает следующее - выбрать все между слешом, после которого идет от одной до двух звездочек и звездачкой, после которого идет слеш.
Цитата:
'com m\nents*/ XXX /**comments'
Но как видно, на деле выражение не останавливается на первом вхождении закрывающей скобки. Почему? Я предполагаю, что связанно это с [\s\S]+, но что с этим делать, я не знаю.

Возвращаясь к примеру... В первом случаи я наверное понял, хотя и могу ошибаться. Он находит 'abc' и начинает его разбирать дальше, 'bc', 'c'. Но если так, то почему во втором случаи он 'aabbcc', 'bbcc', то явно все начиналось с первой из двух 'a'/ И почему же он в следующий проход не вторую... Хотя я наверное понял!!! Он не строку гоняет, а выражение! Он начал с 'a+', потом 'b+' и затем 'c+'.
Я прав?
Ответить с цитированием