HTML Diff
0 added 0 removed
Original 2026-01-01
Modified 2026-02-26
1 <p>В этом уроке мы разберем, что такое модификаторы в регулярных выражениях. Вы узнаете, как и для чего они могут использоваться. Модификаторы в JavaScript применяются по-другому - не так, как показано в примерах. Поэтому для экспериментов с ними используйте PCRE.</p>
1 <p>В этом уроке мы разберем, что такое модификаторы в регулярных выражениях. Вы узнаете, как и для чего они могут использоваться. Модификаторы в JavaScript применяются по-другому - не так, как показано в примерах. Поэтому для экспериментов с ними используйте PCRE.</p>
2 <p>В примере ниже регулярное выражение соответствует одной подстроке:</p>
2 <p>В примере ниже регулярное выражение соответствует одной подстроке:</p>
3 <p>/(?:t.)-(?:t.)/</p>
3 <p>/(?:t.)-(?:t.)/</p>
4 <p>ta-tu ta-t</p>
4 <p>ta-tu ta-t</p>
5 <p>Tu-tu tu-T</p>
5 <p>Tu-tu tu-T</p>
6 <p>Здесь сопоставляются две группы символов через дефис ta-tu, каждая из которых соответствует условию "t и любой символ". Остальные символы из строки не проходят сопоставление:</p>
6 <p>Здесь сопоставляются две группы символов через дефис ta-tu, каждая из которых соответствует условию "t и любой символ". Остальные символы из строки не проходят сопоставление:</p>
7 <ul><li>Символ T не находится, поскольку в выражении символ t указан в нижнем регистре</li>
7 <ul><li>Символ T не находится, поскольку в выражении символ t указан в нижнем регистре</li>
8 <li>Символ перевода строки тоже не находится, поскольку точка по умолчанию не включает перевод строки</li>
8 <li>Символ перевода строки тоже не находится, поскольку точка по умолчанию не включает перевод строки</li>
9 </ul><p>Мы можем минимально изменить выражение таким образом, чтобы оно включало другие подстроки из примера. Для этого воспользуемся модификатором.</p>
9 </ul><p>Мы можем минимально изменить выражение таким образом, чтобы оно включало другие подстроки из примера. Для этого воспользуемся модификатором.</p>
10 <p><strong>Модификаторы</strong>- это символы, которые указываются после знака ? в группе символов регулярного выражения и меняют их поведение.</p>
10 <p><strong>Модификаторы</strong>- это символы, которые указываются после знака ? в группе символов регулярного выражения и меняют их поведение.</p>
11 <p>Если после ? мы поставим i, то включим режим игнорирования регистра. Мы получим сопоставление еще одной подстроки, но уже не с t в нижнем регистре, а с T в верхнем:</p>
11 <p>Если после ? мы поставим i, то включим режим игнорирования регистра. Мы получим сопоставление еще одной подстроки, но уже не с t в нижнем регистре, а с T в верхнем:</p>
12 <p>/(?i:t.)-(?:t.)/</p>
12 <p>/(?i:t.)-(?:t.)/</p>
13 <p>ta-tu ta-t</p>
13 <p>ta-tu ta-t</p>
14 <p>Tu-tu tu-T</p>
14 <p>Tu-tu tu-T</p>
15 <p>Если мы сделаем так, что вторая часть подстроки после дефиса Tu-tu будет также с большой буквы, то сопоставления по ней не будет. Так произойдет, потому что модификатор действует только в рамках группы, где он определен:</p>
15 <p>Если мы сделаем так, что вторая часть подстроки после дефиса Tu-tu будет также с большой буквы, то сопоставления по ней не будет. Так произойдет, потому что модификатор действует только в рамках группы, где он определен:</p>
16 <p>/(?i:t.)-(?:t.)/</p>
16 <p>/(?i:t.)-(?:t.)/</p>
17 <p>ta-tu ta-t</p>
17 <p>ta-tu ta-t</p>
18 <p>Tu-Tu tu-T</p>
18 <p>Tu-Tu tu-T</p>
19 <p>Поэтому давайте продублируем модификатор i во второй группе и получим сопоставление строки Tu-Tu:</p>
19 <p>Поэтому давайте продублируем модификатор i во второй группе и получим сопоставление строки Tu-Tu:</p>
20 <p>/(?i:t.)-(?i:t.)/</p>
20 <p>/(?i:t.)-(?i:t.)/</p>
21 <p>ta-tu ta-t</p>
21 <p>ta-tu ta-t</p>
22 <p>Tu-Tu tu-T</p>
22 <p>Tu-Tu tu-T</p>
23 <p>Такая запись получается более коротким вариантом его аналога:</p>
23 <p>Такая запись получается более коротким вариантом его аналога:</p>
24 <p>(?:[tT].)-(?:[tT].)</p>
24 <p>(?:[tT].)-(?:[tT].)</p>
25 <p>Модификаторы можно выносить и в отдельные группы:</p>
25 <p>Модификаторы можно выносить и в отдельные группы:</p>
26 <p>/(?i)(t.)-(?i)(t.)/</p>
26 <p>/(?i)(t.)-(?i)(t.)/</p>
27 <p>ta-tu ta-t</p>
27 <p>ta-tu ta-t</p>
28 <p>Tu-Tu tu-T</p>
28 <p>Tu-Tu tu-T</p>
29 <p>Но в этом случае будет выделена память под четыре группы совпадений.</p>
29 <p>Но в этом случае будет выделена память под четыре группы совпадений.</p>
30 <p>Рассмотрим еще один интересный модификатор s. Он делает так, что точка начинает включать в себя перевод строки и<a>возврат каретки</a>. Нам уже известно, что точка по умолчанию их не включает - мы могли убедиться в этом в самом начале урока.</p>
30 <p>Рассмотрим еще один интересный модификатор s. Он делает так, что точка начинает включать в себя перевод строки и<a>возврат каретки</a>. Нам уже известно, что точка по умолчанию их не включает - мы могли убедиться в этом в самом начале урока.</p>
31 <p>После ta-t и tu-T следует перевод строки, поэтому эти подстроки не сопоставляются. Укажем модификатор s во второй группе, и теперь у нас совпадут все подстроки:</p>
31 <p>После ta-t и tu-T следует перевод строки, поэтому эти подстроки не сопоставляются. Укажем модификатор s во второй группе, и теперь у нас совпадут все подстроки:</p>
32 <p>/(?i:t.)-(?si:t.)/</p>
32 <p>/(?i:t.)-(?si:t.)/</p>
33 <p>ta-tu ta-t</p>
33 <p>ta-tu ta-t</p>
34 <p>Tu-Tu tu-T</p>
34 <p>Tu-Tu tu-T</p>
35 <p>Модификаторы могут быть отключены. Для этого достаточно указать перед ними -. Давайте добавим - в первую группу и посмотрим на наш пример:</p>
35 <p>Модификаторы могут быть отключены. Для этого достаточно указать перед ними -. Давайте добавим - в первую группу и посмотрим на наш пример:</p>
36 <p>/(?-i:t.)-(?si:t.)/</p>
36 <p>/(?-i:t.)-(?si:t.)/</p>
37 <p>ta-tu ta-t</p>
37 <p>ta-tu ta-t</p>
38 <p>Tu-Tu tu-T</p>
38 <p>Tu-Tu tu-T</p>
39 <p>Активные и отключенные модификаторы можно комбинировать. Мы можем добавить модификатор s и отменить i и m:</p>
39 <p>Активные и отключенные модификаторы можно комбинировать. Мы можем добавить модификатор s и отменить i и m:</p>
40 <p>/(?s-im:t.)-(?si:t.)/</p>
40 <p>/(?s-im:t.)-(?si:t.)/</p>
41 <p>ta-tu ta-t</p>
41 <p>ta-tu ta-t</p>
42 <p>Tu-Tu tu-T</p>
42 <p>Tu-Tu tu-T</p>
43  
43