(?<releaseNote>\#\s(?<releaseDate>[\-0-9]+)\s-\s(?<version>(\d+)(\.(\d+))?(\.(\d+))?(([^0-9][^\s]+)))(?<releaseText>((?!\s# )[\s\S])*))
Where the form this matches is
# <random text> <version specifier>
<release note content
# <version specifier older>
<release note content>
Each of the markdown headers will be seen as an individual release note, with matching groups that catch the date, the version, and the text under the header.