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',
)