$re = '/(?<=>)[#]\w\S*(?=<)\b/';
$str = '<p></p><p>#clarity is what I want</p><p></p><p>#bootiful #dreamer</p><p><a href="https://arstechnica.com/gadgets/2020/05/caddy-offers-tls-https-and-more-in-one-dependency-free-go-web-server/#first" rel="noopener noreferrer nofollow">https://arstechnica.com/gadgets/2020/05/caddy-offers-tls-https-and-more-in-one-dependency-free-go-web-server/#first</a></p
<span class="hashtag" data-hashtag-id="dreamer">#dreamer</span>';
preg_match_all($re, $str, $matches, PREG_SET_ORDER, 0);
// Print the entire match result
var_dump($matches);
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for PHP, please visit: http://php.net/manual/en/ref.pcre.php