Главное, что мне помогло перестать быть зомби копипасты с регулярными выражениями - это понимание того, что любой паттерн просто отвечает на простой вопрос: «какие символы я хочу найти и сколько их?» Как только ты это осознаёшь, синтаксис перестаёт выглядеть как случайная пунктуация и начинает иметь смысл.
Разбивай всё на части вместо того, чтобы пытаться понять весь паттерн сразу. Сначала изучи классы символов (что означают `\d` или `[a-z]`), потом квантификаторы (знаки `+`, `*`, `?`), потом якоря. Потрать реальное время на каждое с тестовым инструментом, чтобы видеть, что совпадает, а что нет. То, что говорили другие про regex101 и подобные сайты - это правда; такой мгновенный фидбек гораздо ценнее любого туториала, потому что ты уже не гадаешь.
Но есть подводный камень, о котором никто не предупреждает: регулярные выражения могут стать бешено сложными, и люди пишут такие монстры, которые технически работают, но никто - включая автора спустя полгода - не может их прочитать. Не попадись в ловушку попытки втиснуть всё в один мега-регулярное выражение. Иногда понятнее и проще в обслуживании использовать несколько маленьких паттернов или просто функции для работы со строками. Я видел скрипты, где кто-то написал 200-символьное регулярное выражение для валидации, когда несколько простых проверок были бы намного легче понять и дебажить. Учи регулярные выражения как надо, чтобы понимать, когда это действительно правильный инструмент, а не просто хватаешься за него, потому что теперь его знаешь.