Correspondência de caractere curinga com expressão regular

Eu tenho uma lista de cerca de 120 mil palavras em inglês (basicamente todas as palavras do idioma).

Preciso de uma expressão regular que permita pesquisar essas palavras usando caracteres curinga, por exemplo, a.k.a.* e?.

Alguns exemplos:

se o usuário procurarm?st*, corresponderia por exemplomaster oumister oumistery.se o usuário procurar*ind (qualquer palavra terminada emind), corresponderiawind oubind oublind ougrind.

Agora, a maioria dos usuários (especialmente aqueles que não estão familiarizados com expressões regulares) sabem que? é um substituto para exatamente 1 caractere, enquanto* é um substituto para 0, 1 ou mais caracteres. Eu absolutamente quero construir meu recurso de pesquisa com base nisso.

Minhas perguntas são: Como faço para converter o que o usuário digita (m?st* por exemplo) para uma expressão regular?

Eu pesquisei na web (obviamente, incluindo este site) e tudo o que pude encontrar foram tutoriais que tentaram me ensinar muito ou perguntas que eram um pouco semelhantes, mas não o suficiente para fornecer uma resposta para o meu próprio problema.

Tudo o que eu pude descobrir foi que eu tenho que substituir? com.. assimm?st* torna-sem.st*. No entanto, não tenho ideia do que substituir* com.

Qualquer ajuda seria muito apreciada. Obrigado.

PS: Eu sou totalmente novo em expressões regulares. Eu sei o quão poderosas elas podem ser, mas também sei que elas podem ser muito difíceis de aprender. Então eu nunca levei o tempo para isso ...

questionAnswers(9)

yourAnswerToTheQuestion