0 added
0 removed
Original
2026-01-01
Modified
2026-02-26
1
<p>Регулярные выражения - это формальный язык, который используется для поиска символов и манипуляций с подстроками. Это мощный инструмент, который позволяет эффективно работать с текстом.</p>
1
<p>Регулярные выражения - это формальный язык, который используется для поиска символов и манипуляций с подстроками. Это мощный инструмент, который позволяет эффективно работать с текстом.</p>
2
<p>Регулярные выражения - это специальная текстовая строка, которая задает шаблон поиска. В шаблоне поиска используются:</p>
2
<p>Регулярные выражения - это специальная текстовая строка, которая задает шаблон поиска. В шаблоне поиска используются:</p>
3
<ul><li>Символы, которые нужно найти</li>
3
<ul><li>Символы, которые нужно найти</li>
4
<li>Специальные символы</li>
4
<li>Специальные символы</li>
5
</ul><p>Чтобы было нагляднее, в этом курсе мы будем использовать такой формат примеров:</p>
5
</ul><p>Чтобы было нагляднее, в этом курсе мы будем использовать такой формат примеров:</p>
6
<ul><li>Сверху - шаблонные строки с регулярными выражениями</li>
6
<ul><li>Сверху - шаблонные строки с регулярными выражениями</li>
7
<li>Снизу - строки, в которых мы производим поиск</li>
7
<li>Снизу - строки, в которых мы производим поиск</li>
8
</ul><p>Для начала зададим шаблон с символами, которые мы хотим найти в строке:</p>
8
</ul><p>Для начала зададим шаблон с символами, которые мы хотим найти в строке:</p>
9
<p>/java/</p>
9
<p>/java/</p>
10
<p>java \ python ruby1.9 javascript c#</p>
10
<p>java \ python ruby1.9 javascript c#</p>
11
<p>Обратите внимание на символ / - его называют<strong>разделитель</strong>(<em>delimiter</em>). Его указывают в начале и конце регулярного выражения, чтобы отделить регулярное выражение от остального текста.</p>
11
<p>Обратите внимание на символ / - его называют<strong>разделитель</strong>(<em>delimiter</em>). Его указывают в начале и конце регулярного выражения, чтобы отделить регулярное выражение от остального текста.</p>
12
<p>Мы видим, что с текстом java сопоставилось два варианта из строки. Такое совпадение называется<strong>точным</strong>. Мы не использовали специальных символов и нашли в тексте комбинации символов, совпадающие с заданной комбинацией на сто процентов.</p>
12
<p>Мы видим, что с текстом java сопоставилось два варианта из строки. Такое совпадение называется<strong>точным</strong>. Мы не использовали специальных символов и нашли в тексте комбинации символов, совпадающие с заданной комбинацией на сто процентов.</p>
13
<p>Если мы добавим еще один символ, то соответствия уже не будет, потому что такой подстроки в нашей строке нет:</p>
13
<p>Если мы добавим еще один символ, то соответствия уже не будет, потому что такой подстроки в нашей строке нет:</p>
14
<p>/javab/</p>
14
<p>/javab/</p>
15
<p>java \ python ruby1.9 javascript c#</p>
15
<p>java \ python ruby1.9 javascript c#</p>
16
<p>Разберем подробнее разницу между специальными символами и символами, которые мы ищем в тексте. Давайте попробуем найти в тексте любой символ. Для этого мы используем<strong>метасимвол</strong>- точку .:</p>
16
<p>Разберем подробнее разницу между специальными символами и символами, которые мы ищем в тексте. Давайте попробуем найти в тексте любой символ. Для этого мы используем<strong>метасимвол</strong>- точку .:</p>
17
<p>/./</p>
17
<p>/./</p>
18
<p>java \ python ruby1.9 javascript c#</p>
18
<p>java \ python ruby1.9 javascript c#</p>
19
<p>В результате подсветилась вся строка.</p>
19
<p>В результате подсветилась вся строка.</p>
20
<p>Теперь попробуем комбинировать символы в шаблонной строке. Поищем совпадения комбинаций любого символа с символом y. В таком случае мы получим два совпадения:</p>
20
<p>Теперь попробуем комбинировать символы в шаблонной строке. Поищем совпадения комбинаций любого символа с символом y. В таком случае мы получим два совпадения:</p>
21
<p>/.y/</p>
21
<p>/.y/</p>
22
<p>java \ python ruby1.9 javascript c#</p>
22
<p>java \ python ruby1.9 javascript c#</p>
23
<p>При комбинировании специальных и обычных символов нужно учитывать особое поведение спецсимволов.</p>
23
<p>При комбинировании специальных и обычных символов нужно учитывать особое поведение спецсимволов.</p>
24
<p>Обратите внимание на пример ниже, где мы задаем в шаблоне символы 1.9. Важно понимать, что они соответствуют не самой комбинации символов 1.9, а всем подстрокам из трех символов, в которых первый символ - 1, а последний - 9.</p>
24
<p>Обратите внимание на пример ниже, где мы задаем в шаблоне символы 1.9. Важно понимать, что они соответствуют не самой комбинации символов 1.9, а всем подстрокам из трех символов, в которых первый символ - 1, а последний - 9.</p>
25
<p>Таким образом, между этими символами в строке может находиться что угодно:</p>
25
<p>Таким образом, между этими символами в строке может находиться что угодно:</p>
26
<p>/1.9/</p>
26
<p>/1.9/</p>
27
<p>java \ python ruby1.9 javascript c#</p>
27
<p>java \ python ruby1.9 javascript c#</p>
28
<p>java \ python ruby189 javascript c#</p>
28
<p>java \ python ruby189 javascript c#</p>
29
<p>java \ python ruby1k9 javascript c#</p>
29
<p>java \ python ruby1k9 javascript c#</p>
30
<p>Представим, что нам нужно использовать точку как обычный знак препинания, а не как специальный символ в языке регулярных выражений. В таком случае нужно применить<strong>экранирование символов</strong>с помощью одного из так называемых escape-символов.</p>
30
<p>Представим, что нам нужно использовать точку как обычный знак препинания, а не как специальный символ в языке регулярных выражений. В таком случае нужно применить<strong>экранирование символов</strong>с помощью одного из так называемых escape-символов.</p>
31
<p>Для этого поставим обратный слэш \ перед символом, который мы хотим экранировать. Так спецсимвол перестанет иметь специальное значение. Как видим, все работает. Если вместо точки мы поставим другой символ, наша подстрока не будет совпадать с шаблонной:</p>
31
<p>Для этого поставим обратный слэш \ перед символом, который мы хотим экранировать. Так спецсимвол перестанет иметь специальное значение. Как видим, все работает. Если вместо точки мы поставим другой символ, наша подстрока не будет совпадать с шаблонной:</p>
32
<p>/1\.9/</p>
32
<p>/1\.9/</p>
33
<p>java \ python ruby1.9 javascript c#</p>
33
<p>java \ python ruby1.9 javascript c#</p>
34
<p>java \ python ruby1d9 javascript c#</p>
34
<p>java \ python ruby1d9 javascript c#</p>
35
<p>Точно так же можно экранировать и сам обратный слэш, если нам нужно использовать его в качестве обыкновенного символа. В результате мы увидим следующее совпадение:</p>
35
<p>Точно так же можно экранировать и сам обратный слэш, если нам нужно использовать его в качестве обыкновенного символа. В результате мы увидим следующее совпадение:</p>
36
<p>/\\/</p>
36
<p>/\\/</p>
37
<p>java \ python ruby1d9 javascript c#</p>
37
<p>java \ python ruby1d9 javascript c#</p>
38
38