Currently, posix-string sub-regexes are only handled in sre->procedure, which means they are only handled by the backtracking engine, even if the strings are strictly regular expressions.
We could simply call string->sre in sre->nfa and recur on the result, but if then the compilation is aborted and we compile to a backtracking matcher we'd have to do the same again. Perhaps it would be better to "normalize" the expression beforehand so that we don't do the same thing twice? We kind of already do this in string->irregex and irregex, but only on the "main" input.