split to the rescue!
{% assign str = 'garbage <h1>TITLE</h1> moregarbage' %} {% assign a = str | split: '<h1>' %}
Now we have garbage in [0] and TITLE</h1> moregarbage in [1]
{% assign b = a[1] | split: '</h1>' %}
Now we have a TITLE in b [0] and moregarbage in b [1]
source share