$re = '%<a\b[^>]*>(?:[^<]|<(?!/a)[^>]*>)*(suchwort)%is';
$str = '<p><a class="btn btn-primary" href="/de/einsuchwortlink/">Mehr suchwort erfahren</a></p>
<ul>
<li class="articleteaser__item suchwort">
<a href="/de/einlink/">
<div class="articleteaser__text suchwort">
<div class="articleteaser__rubric">suchwort soll hier gefunden werden weil innerhalb von a</div>
</div>
</a>
</li>
</ul>
<p><a class="btn btn-primary" href="/de/einlink/">Mehr Suchwort soll gefunden werden weil innerhalb von a erfahren</a></p>
<p><a class="btn btn-primary" href="/de/einlink/">Mehr erfahren</a></p>
<p>Dies suchwort soll nicht gefunden werden, weil außerhalb von a</p>
<ul>
<li>
<a href="/de/einlink/">
<div>
<span>
<svg role="img">
<use xlink:href="/theme/symbols.svg#icon37"></use>
</svg>
</span>
</div>
<div class="articleteaser__text">
<div>Blabla – suchwort soll gefunden werden</div>
<div>Ein Mustertext</div>
</div>
</a>
</li>
<li>
<div>
<span>
<svg role="img">
<use xlink:href="/theme/symbols.svg#icon37"></use>
</svg>
</span>
</div>
<div class="articleteaser__text">
<div>Fluglärm – suchwort soll nicht gefunden werden</div>
<div>Hier noch <a href="einlink">Blindtext</a></div>
</div>
</li>
</ul>
';
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