some word list info in this blog https://community.jmp.com/t5/Uncharted/WordNet/ba-p/28984
A long time ago an algorithm like this was used:
look up the word in an associative array of known good words. If the lookup fails, try some rules for removing s, ing, ed suffixes and look it up again. if it still fails, make suggestions by looking up similar words formed by switching pairs of letters, inserting letters, deleting letters.
I think the suggestions to use an external program are appropriate, and I think regex is mostly not the answer. You might be able to use recode within text explorer, though it will be a manual process.
Here's an interesting function in JMP which might be useful if you decide to make your own solution
shortest edit script("maintainence","maintenance")
{{"Common", "maint"}, {"Insert", "en"}, {"Common", "a"}, {"Remove", "i"}, {"Common",
"n"}, {"Remove", "en"}, {"Common", "ce"}}
The edit script is a description of where the two words differ. You could create a metric from that using number of characters inserted and deleted.
Craige