It depends on how the regexp is implemented. So, I'm speculating here....
I suppose that a clever regexp implementation could recognize that you are searching for a 5 or 6 letter string, and discard strings that are shorter than 5 letters and then check the matches.
You might be able to optimize this (assuming short circuit logic)
WHERE m._name CONTAINS 'Apple' and m._name m._name=~ '(?i)'Apple'
or maybe if this does what you want (and it depends in their index indexes the reverse of the string to be able to find from the end of the string efficiently.)
WHERE m._name ENDS WITH 'Apple' and m._name m._name=~ '(?i)'Apple'
Otherwise, the regexp expression is probably trying to do a match on every m._name which is a linear search.