¿Cómo capitalizar la primera letra de la primera palabra en una oración?

stoy tratando de escribir una función para limpiar la entrada del usuario.

No estoy tratando de hacerlo perfecto. Prefiero tener algunos nombres y acrónimos en minúsculas que un párrafo completo en mayúsculas.

Creo que la función debería usar expresiones regulares, pero soy bastante malo con ellas y necesito ayuda.

Si las siguientes expresiones van seguidas de una letra, quiero poner esa letra en mayúscula.

 "."
 ". " (followed by a space)
 "!"
 "! " (followed by a space)
 "?"
 "? " (followed by a space)

Incluso mejor, la función podría agregar un espacio después de ".", "!" y "?" si van seguidos de una letra.

¿Cómo se puede lograr esto?