Обзор
Практическое руководство по безопасному и переносимому использованию регулярных выражений.
Без применения флагов вроде (?s), (?m), (?i) — только устойчивые паттерны, одинаково работающие в разных ОС и инструментах.
Различия перевода строк
| ОС |
Код перевода строки |
Рекомендуемый шаблон |
Примечание |
| Windows |
\r\n |
\r?\n |
Универсально для CRLF и LF |
| macOS / Linux |
\n |
\r?\n |
Одинаково работает на всех |
Важно
- Для поиска или замены перевода строки используйте
\r?\n.
- Для выборки многострочного блока применяйте
(?:.|\r|\n), так как . не совпадает с переводом строки.
Часть 1: Базовый синтаксис
1-1. Классы символов и диапазоны
| Шаблон |
Значение |
Пример |
Совпадение |
. |
Любой символ, кроме перевода строки |
a.c / abc |
abc |
[abc] |
a, b или c |
bag |
a |
[^0-9] |
Не цифра |
a1 |
a |
[A-Z0-9] |
Заглавная буква или цифра |
X8z |
X, 8 |
1-2. Квантификаторы
| Шаблон |
Значение |
Пример |
Совпадение |
* |
0 и более раз |
goooogle |
goooo |
+ |
1 и более раз |
google |
oo |
? |
0 или 1 раз |
color colour |
Оба совпадают |
{n} |
Ровно n раз |
a{3} / aaa |
aaa |
{n,} |
Не менее n раз |
a{2,} / aaaa |
aaaa |
{n,m} |
От n до m раз |
a{2,4} / aaaaa |
aaaa |
1-3. Якоря
| Шаблон |
Значение |
Пример |
Совпадение |
^abc |
abc в начале строки |
abc\nzabc |
первая строка |
abc$ |
abc в конце строки |
zabc\nabc |
обе строки |
\bword\b |
Слово целиком |
word words |
word |
\Bing |
Не в границе слова |
ringing |
вторая часть ing |
1-4. Специальные обозначения
| Шаблон |
Значение |
Пример |
Совпадение |
\d |
Цифра [0-9] |
ver2.10 |
2,10 |
\D |
Не цифра |
a1 |
a |
\w |
Буква, цифра, _ |
a_b-1 |
a_b |
\W |
Не \w |
a# |
# |
\s |
Пробел/таб/перевод строки |
a b |
пробел |
\S |
Не пробел |
a b |
a,b |
\t |
Табуляция |
a\tb |
a[TAB]b |
1-5. Экранирование спецсимволов
| Шаблон |
Символ |
Пример |
Совпадение |
\. |
Точка |
a.c |
a.c |
\* |
Звёздочка |
a*b |
a*b |
\+ |
Плюс |
a+b |
a+b |
\? |
Вопрос |
what? |
what? |
\( \) |
Скобки |
(test) |
(test) |
| |
Вертикальная черта |
`a |
b` |
\\ |
Обратный слэш |
C:\\path |
\\ |
\^ |
Крышка |
^abc |
^abc |
\$ |
Знак доллара |
total$ |
$ |
\[ \] |
Квадратные скобки |
[abc] |
[abc] |
\{ \} |
Фигурные скобки |
{a,b} |
{a,b} |
Часть 2: Группировка, ветвления, проверки
| Шаблон |
Назначение |
Пример |
Совпадение |
(abc)+ |
Повтор группы |
abcabcx |
abcabc |
| `(?:jpg |
png)` |
Некаптурирующая альтернатива |
file.png |
| `foo |
bar` |
OR |
bar |
\d+(?=円) |
Число перед “円” |
合計100円 |
100 |
^(?!.*error).* |
Строки без “error” |
ok\nerror |
ok |
(?<=¥)\d+ |
После “¥” |
¥300 |
300 |
(?<!Mr\.)\s[A-Z] |
Заглавная, не после “Mr.” |
Ms. Alice |
A |
Часть 3: Примеры с многострочными данными
| Назначение |
Шаблон |
Пример |
Совпадение |
| HTML-блок |
`<div>(?:. |
\r |
\n)*?</div>` |
| Запись лога |
`^[\d{4}-\d{2}-\d{2} [\d:]+](?:. |
\r |
\n)*?(?=^[\d{4}-\d{2}-\d{2} |
| Код-блок Markdown |
« «`(?:. |
\r |
\n)*?«` « |
Комментарий /*…*/ |
`/*(?:. |
\r |
\n)*?*/` |
Часть 4: Практические шаблоны
| Назначение |
Шаблон |
Пример |
Совпадение |
| Только цифры |
^\d+$ |
123 |
123 |
| Только латиница и цифры |
^[A-Za-z0-9]+$ |
user01 |
user01 |
| Email (простой) |
^[\w.-]+@[\w.-]+\.[A-Za-z]{2,}$ |
a@b.com |
a@b.com |
| URL |
https?://[\w.-]+\.[A-Za-z]{2,}(/[\w./?=&%-]*)? |
https://ex.com/a |
весь URL |
| Дата ISO |
\d{4}-\d{2}-\d{2} |
2025-10-30 |
2025-10-30 |
| Телефон международный |
\+\d{1,3}[\s-]?\d{1,14} |
+81 90 1234 5678 |
весь номер |
| Пароль (сильный) |
^(?=.*[a-z])(?=.*[A-Z])(?=.*\d).{8,}$ |
Abcd1234 |
весь текст |
| HTML-комментарий |
`<!—(?:. |
\r |
\n)*?—>` |
| Без “error” |
^(?!.*error).* |
ok\nerror |
ok |
Часть 5: Примеры замены
| Задача |
Шаблон |
Замена |
Пример |
Результат |
| Инвертировать порядок слов |
(\w+)\s+(\w+) |
${2} ${1} |
John Doe |
Doe John |
| Заменить разделитель |
; |
, |
a;b;c |
a,b,c |
| Удалить лишние пробелы |
\s{2,} |
|
a b |
a b |
| Удалить HTML-теги |
<[^>]+> |
« |
<p>a</p> |
a |
| Обрезать пробелы |
`^\s+ |
\s+$` |
« |
a |
| Перевод строки → пробел |
\r?\n |
|
a\nb |
a b |
Удалить комментарий // |
//.*$ |
« |
x=1;//note |
x=1; |
| Формат даты |
(\d{4})/(\d{2})/(\d{2}) |
${1}-${2}-${3} |
2025/10/30 |
2025-10-30 |
| Удалить повтор строк |
^(.*)(\r?\n\1)+$ |
${1} |
дубликаты |
одна строка |
Итог
Регулярные выражения — мощный инструмент, применимый во многих средах.
Используйте приведённые шаблоны для анализа логов, фильтрации данных и автоматизации текстовых задач.