Специальные символы:

Точка . Точка . соответствует любому одиночному символу, включая буквы, цифры, пробелы и так далее. Единственный символ, с которым она не способна совпасть - это символ новой строки.\n.
Вопросительный знак ? Означает, что предшествующий символ может быть присутствовать или отсутствовать.
Обратный слеш \ Экранирующий символ, используется для отделения особых символов от обычных.
Набор символов [abc] [abc] - символы помещенные в квадратные скобки - это набор, любое значение из набора может ему соответствовать. Например, набор [abc] означает, что ему может соответствовать один символ из "a", "b" или "c".
Диапазон символов [0-9] Диапазон указывается с помощью символа тире. Символ, предшествующий тире, обозначает начальную точку диапазона, символ после него - последний символ, входящий в диапазон. [0-9] - это набор всех цифр от 0 до 9. Любая цифра из этого набора может соответствовать.
Исключение символов из наборов [^abc] Позволяет определить набор символов, которые вы не хотите включать. [^abc] означает, что a, b, c - исключены из допустимых значений.
Исключение символов из диапазонов [^a-c] Позволяет определить диапазон символов, которые вы не хотите включать. [^a-c] означает, что a, b, c - исключены из допустимых значений.
Alternations ` `

Сокращения (Shorthands) - предопределенные сокращения для часто используемых наборов символов:

\d = [0-9]
\s = [\t\n\x0B\f\r] символ пробела (включая табуляцию и символ новой строки):
\w = [a-zA-Z_0-9] буквенно-цифровой символ (слово):
\b обозначение границы слова. Он не сопоставляется с конкретным символом, а, скорее, обозначает границу между буквенно-цифровым символом и не буквенно-цифровым символом (например, символом пробела) или границей строки (началом или концом строки). Таким образом, \ba сопоставляет все слова, начинающиеся с "a", a\b сопоставляет все слова, заканчивающиеся на "a", и \ba\b сопоставляет все отдельные "a", слева и справа от которых присутствуют не буквенно-цифровые символы.
\D = [^0-9] не цифровой символ
\S = [^ \t\n\x0B\f\r] не любой пробельный символ
\W = [^a-zA-Z_0-9] не буквенно-цифровой символ
\B обозначает отсутствие границы слова, обратное для сокращения \b: находит совпадение всякий раз, когда нет "пробела" между буквенно-цифровыми символами. Например, a\B соответствует всем словам, начинающимся с "a".

Квантификаторы (Quantifiers) - определяют, как часто символ может встречаться в шаблоне regex:

+ соответствует одному или более повторениям предыдущего символа
* соответствует нулю или более повторениям предыдущего символа
{n} соответствует ровно n повторениям предыдущего символа
{n,m} соответствует не менее n, но не более m повторениям предыдущего символа. Важно не делать пробел после запятой, иначе это не будет работать.
{n,} соответствует не менее n повторениям предыдущего символа
{0,m} соответствует не более m повторениям предыдущего символа
? or {0,1} делает предшествующий символ необязательным то есть ноль или один раз

Полезные ссылки по регулярным выражениям:

  1. https://regex101.com/ - проверка регулярных выражений онлайн
  2. https://engineering.linkedin.com/puzzle - пазл от LinkedIn. Разбор пазла и правильные ответы: https://sudonull.com/post/90150-Linkedin-regular-expression-puzzle-parsing
  3. https://learn.javascript.ru/regular-expressions - онлайн учебник по регулярным выражениям
  4. https://gchursov.notion.site/Regular-Expressions-Cheat-Sheet-b21bf92d6f8b4382a7408ef8b5f2ec51 - эта же шпаргалка на английском языке (English version of cheet sheet)

Другие ссылки:

  1. Мой LinkedIn: https://www.linkedin.com/in/chursovg/
  2. Чек-лист оформления резюме для ИТ специалистов: https://gchursov.notion.site/dfa51755de0541538b0280b0fe1e5ea5