The problem is the "(?:<whatever>
)" subexpressions, which are "clustering but non-capturing" subexpressions. By "clustering," we mean that the entire parenthesized subexpression is quantified by the quantifier token (e.g. "?". "*", "+") that follows. However, unlike normal parenthesized/clustering sub-expressions, non-capturing subexpressions do not create back-references (for use here as "$1" through "$9").
You can get the same effect by allowing the subexpression to capture, but then ignoring the captured value (now $2 in the new version). It's a little slower, but at least it will work... Also, I believe that the clustering/non-capturing subpatterns at the end of your pattern can simply be omitted, leaving the pattern without an end-anchor. And since this is faster that fully-specifying the pattern, we kind of make up for lost time on the unnecessary capturing we've now had to do... :)
So, I'd expect this rule to do much the same thing on Apache 1.3.x as what you had working on Apache 2.x:
RewriteRule ^([a-z0-9\-/]+)(\*/)?([a-z0-9]*)/?([a-z0-9]*) /view.php?path=$1&action=$3&extra=$4 [NC,L]
Note that the second subexpression (now without the "?:") is now a capturing expression, but we since we now ignore $2, no matter...
Once you know regex pretty well, you get to learn all about its different "flavors." :)