Разбор темы

Извлечение заголовков Markdown учит привязке шаблона к позиции в строке. Заголовок — это решётки в САМОМ начале строки, поэтому без якоря начала ^ совпадёт и решётка где-нибудь в середине текста. Один-два-три уровня заголовков покрываются квантификатором «одна и больше» на символе #, а требование пробела после решёток отсекает строки вроде #tag, которые синтаксически заголовками не являются. Здесь нужны целые строки, поэтому grep работает без -o.

Что проверяется

  1. Найдено 3 заголовка
  2. Заголовки извлечены

Как это выглядит