Since you've tagged the question with grep and sed, I assume that list of string is expressed as one item per line of some text input.
Then:
sed -n 's/^.*\([^[:digit:]]\)[[:digit:]]\{1,\}$/\1/p' < that-input
or (assuming GNU grep or compatible built with perl-like regexp support):
grep -Po '\D(?=\d+$)' < that-input
would output the non-digit character that precede trailing digits in lines that end in a non-digit followed by 1 or more digit.
Both use regexps to do the matching but sed uses basic regular expressions while grep -P uses perl-like regular expressions.
Some sed implementations support -P as well, but not the most common ones. Several support -E for extended regular expressions which is yet another dialect of regular expressions. With those:
sed -E -n 's/^.*([^[:digit:]])[[:digit:]]+$/\1/p' < that-input
Or you could just use perl itself:
perl -lne 'print $1 if /(\D)\d+$/' < that-input
(beware perl works at byte-level by default instead of character level, see the -C option to tell it to interpret the input as UTF-8 characters, or -Mopen=locale to decode/encode input/output as per the locale's encoding like grep/sed typically do).
or pcregrep, the sample grep implementation that comes with libpcre (the library used by GNU grep -P):
pcregrep -o1 '(\D)\d+$' < that-input
frdwop04supposed to befrdwoq04instead?