| 1 | <!-- kb_card |
| 2 | id: kb-regex-quickref-v1 |
| 3 | title: Regex — L0 шпаргалка |
| 4 | cluster: regex-friedl-mre3 |
| 5 | kb_layer: L0 |
| 6 | book_alignment: Сводные таблицы в духе ранних глав MRE + справочника по метасимволам. |
| 7 | last_reviewed_utc: 2026-03-21 |
| 8 | --> |
| 9 | |
| 10 | # Regex: шпаргалка (L0) |
| 11 | |
| 12 | ## Назначение |
| 13 | |
| 14 | Минимум символов для чтения и набора паттерна; детали — в `kb-regex-syntax-features-v1.md`. |
| 15 | |
| 16 | ## Метасимволы (типичный POSIX/PCRE/.NET стиль) |
| 17 | |
| 18 | | Класс | Символы | Смысл | |
| 19 | |--------|---------|--------| |
| 20 | | Литералы | буквы/цифры (часто) | Сами себе | |
| 21 | | Точка | `.` | Один символ (кроме перевода строки — зависит от режима) | |
| 22 | | Класс | `[...]`, `[^...]` | Один символ из набора / не из набора | |
| 23 | | Квантификатор | `*`, `+`, `?`, `{m,n}` | Повтор предыдущего «элемента» | |
| 24 | | Группа | `(...)` | Капчур + приоритет + квантификация блока | |
| 25 | | Или | `\|` | Альтернатива | |
| 26 | | Якорь | `^`, `$` | Начало/конец строки (зависит от многострочности) | |
| 27 | | Граница слова | `\b`, `\B` | Между `\w` и не-`\w` | |
| 28 | |
| 29 | ## Частые шорткаты классов |
| 30 | |
| 31 | | Шорткат | Обычно | |
| 32 | |---------|--------| |
| 33 | | `\d` | Цифра | |
| 34 | | `\w` | «Словесный» символ (зависит от Unicode-режима) | |
| 35 | | `\s` | Пробельный | |
| 36 | |
| 37 | ## Экранирование |
| 38 | |
| 39 | - В regex-литералах языка и в разных инструментах число обратных слэшей разное: **всегда** сверяй с правилами строки языка (C# verbatim `@"..."`, JS template vs обычная строка). |
| 40 | |
| 41 | ## Жадность |
| 42 | |
| 43 | - По умолчанию квантификаторы **жадные** (берут максимум, отдают назад при необходимости). |
| 44 | - `*?`, `+?`, `??`, `{m,n}?` — ленивые (минимум совпадения). |
| 45 | |
| 46 | ## Три вопроса перед матчем |
| 47 | |
| 48 | 1. Какой **диалект** (JS, .NET, PCRE, grep -E)? |
| 49 | 2. Нужен ли **многострочный** или **однострочный** режим для `^$` и `.`? |
| 50 | 3. Есть ли **таймаут** или лимит шагов в проде (.NET `MatchTimeout`)? |
| 51 | |
| 52 | ## Связи |
| 53 | |
| 54 | - `index-knowledge-regex-cluster-v1.md` |
| 55 | - `kb-regex-syntax-features-v1.md` |
| 56 | - `regex-playbook.md` |
| 57 | |
| 58 | <!-- section:quantifiers-one-liner --> |
| 59 | **Квантификаторы:** `*` ≥0, `+` ≥1, `?` 0 или 1, `{m}` ровно m, `{m,}` ≥m, `{m,n}` от m до n. |
| 60 | <!-- /section:quantifiers-one-liner --> |
| 61 | |
| 62 | |