Different iterations of regular expressions
First, note that, over any finite alphabet, there are countably infinitely many regular expressions. This is immediate from the fact that regular expressions are finite strings (which gives the upper bound) and that $a$, $aa$, $aaa$, ... are all regular expressions (which gives the lower bound).  From now on, I'm just going to say "infinite" instead of "countably infinite" because we've established that nothing in this context is uncountable.

If you're allowed to use $\varepsilon$, there are infinitely many regular expressions that match $abcd$: for example, $abcd\epsilon^n$ for all $n\geq 0$.

If you're allowed to use alternation, there are infinitely many: for example, $abcd$, $(a+a)bcd$, $(a+a+a)bcd$, ... .

If you want regular expressions that match only the string $abcd$, Kleene star isn't useful. If it's applied to any regexp that matches any non-empty string, then the resulting regexp will match strings of arbitrary length, so will be invalid. If it's applied only to regexps that are equivalent to&nbsp;$\varepsilon$ then we could have already used those regexps to get infinitely many regexps for $abcd$, as in the $\varepsilon$&nbsp;case. The only remaining case is that $\emptyset^*\equiv\varepsilon$, so Kleene star and&nbsp;$\emptyset$ together yield infinitely many regexps for $abcd$. However, this case isn't relevant in your case structure, since you eliminate $\varepsilon$ and&nbsp;$\emptyset$ from consideration at the same time.

If you're only allowed concatenation, then there is exactly one regular expression that matches $abcd$: $abcd$ itself.