Lo más importante que me ayudó a dejar de ser un zombi de copiar y pegar con regex fue entender que cada patrón solo responde una pregunta simple: "¿qué caracteres quiero que coincidan y cuántos de ellos?" Una vez que lo captures, la sintaxis deja de parecer puntuación aleatoria y empieza a tener sentido.
Divídelo en piezas en lugar de intentar entender un patrón completo de una vez. Aprende primero las clases de caracteres (qué significa `\d` o `[a-z]`), luego los cuantificadores (los `+`, `*`, `?`), luego los anclajes. Dedica tiempo real a cada uno con una herramienta de prueba para que puedas ver qué coincide y qué no. Lo que otros mencionaron sobre regex101 y sitios similares es sólido - esa retroalimentación inmediata es mucho más valiosa que cualquier tutorial porque ya no estás adivinando.
Aquí está la trampa de la que nadie te advierte: regex puede volverse increíblemente complicado y la gente escribirá estos monstruos que técnicamente funcionan pero nadie (incluyendo el autor original seis meses después) puede leer. No caigas en la trampa de intentar hacer que un mega-regex lo haga todo. A veces es más claro y más mantenible hacer múltiples patrones más pequeños o incluso simplemente usar funciones de cadena. He visto scripts donde alguien escribió un regex de 200 caracteres para validar algo cuando unas pocas comprobaciones simples hubieran sido mucho más fáciles de entender y depurar. Aprende regex correctamente para que puedas reconocer cuándo es realmente la herramienta adecuada en lugar de simplemente usarla porque ahora la conoces.