If you have `zsh`, that would be more easily and safely (and portably) done there:

```
autoload -Uz zmv
zmv -n '(*-)[[:alnum:]]##_<->_<->(*.*)' '$1$2'
```

(remove the `-n` (dry-run) if happy).

That's using shell globs (zsh ones with `extendedglob` enabled) instead of regular expressions though in terms of functionality you get the equivalent of extended regexps and more.

- `*` is the usual matches any number of characters (or bytes if there are bytes not forming valid characters, one reason it's safer than (most) regexps
- `[[:alnum:]]` is the standard matching by POSIX character class.
- `##` is one or more of previous atom (like `+` in ERE/PCRE).
- `<->` is any sequence of one or more ASCII decimal digits, like `<1-10>` but without bound.

`zmv` will do a few sanity checks before starting the renaming making it safer than the various variants of `rename` around.