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+'.
Я прав?