Code: Select all
^Your attacks? strikes? (?:an?|the) ([\w\s]+) (\d+) times, with \**(\w+)\** (\w+)!$
Then, you can call string.lower() on matches[4] (guessing it's 4 by count). That way, you can dispense with the crazy lookup table entirely. *MANGLING* becomes "mangling", ***DISMEMBERING*** becomes "dismembering", obliterating becomes "obliterating".
This also drastically reduces maintenance burden, as you don't need to deal with _critNames at ALL. Just remove it.
Now, I see there are more special characters in there (<, >, =). I'll leave that as an exercise for you (hint: see the \* in there? Now think of that with []'s around it...).