Я не знаю, как сопоставление регулярных выражений обрабатывается в ruby, но я уверен, что вы можете извлечь групп из регулярных выражений.
Для вашего случая регулярное выражение:
<([^\s]*).*(</.*>|/>)
должны сделать свое дело.
После использования его на вашей входной строке будут только имена тегов в группе # 1 для каждого совпадения.