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

Точка . Точка . соответствует любому одиночному символу, включая буквы, цифры, пробелы и так далее. Единственный символ, с которым она не способна совпасть - это символ новой строки.\\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