As you mention php in the comment of the accepted answer, you might also make use of a SKIP FAIL approach:
_[0-9a-z]{24}(*SKIP)(*FAIL)|[a-z]+(?:_[a-z]+)*
In parts, the pattern matches:
_[0-9a-z]{24}
Match _
and 24 repetitions of ranges 0-9a-z
(*SKIP)(*FAIL)
The previous matched should not be part of the match result
|
or
[a-z]+
Match 1+ chars a-z
(?:_[a-z]+)*
Optionally repeat _
and 1+ chars a-z
See a regex demo and a PHP demo
Example code
$re = '/_[0-9a-z]{24}(*SKIP)(*FAIL)|[a-z]+(?:_[a-z]+)*/';
$str = 'hello word some_stuff other_stuff_607eea770b6d00003d001579 something';
preg_match_all($re, $str, $matches);
var_export($matches[0]);
Output
array (
0 => 'hello',
1 => 'word',
2 => 'some_stuff',
3 => 'other_stuff',
4 => 'something',
)