На счёт
[\s\S]+ - множители(
* +) по умолчанию
жадные. Чтобы сделать поиск не жадным, нужно добавить в конец
?.
Если упростить: жадный продолжает поиск пока не находит совпадение максимально возможной длины, нежадный довольствуется самым первым.
Под \S(не-пробел) подходит и b и с :
alert([
'abbbbbc'.match(/ab+\S/), //жадно
'abbbbbc'.match(/ab+?\S/) //нежадно
].join('\n'))