Перейти до основного вмісту
Модуль 5 · Урок 3 із 419/32 у курсі~8 min
Модульні уроки (3/4)

Заперечення: `[^...]`

Розміщення каретки ^ як першого символу в дужках інвертує клас: він відповідає будь-якому символу крім перелічених.

Code
Pattern: [^aeiou]
Sample:  ciao mondo
          ^   ^^  ^

[^aeiou] збігається з приголосними, пробілами, знаками пунктуації, цифрами\u2026 усім, що не голосна.

Типові приклади

  • [^\s] -- будь-який символ "не пробіл" (еквівалент \S).
  • [^0-9] -- усе, що не є цифрою (еквівалентно \D).
  • [^"]+ -- "послідовність символів, які не є подвійними лапками" (корисно для витяг вмісту між лапками).
Code
Pattern: "([^"]+)"
Sample:  Il libro "Il nome della rosa" e' famoso.

Група ([^"]+) фіксує все між лапками зупиняючись перед наступним ": це класичний прийом, щоб уникнути проблема жадібних проти ледачих.

Заперечення та альтернативні символи підстановки

Заперечений клас [^...] використовує рівно один символ, який НЕ є частиною зазначеного набору. Це потужний інструмент для запобігання роботі двигуна за критичними роздільниками, уникаючи ReDoS, викликаного нескінченними циклами зворотного відстеження.

Спробуйте

вправи#regex.m5.l3.e1
Спроби: 0Завантаження…

Витягніть вміст кожного рядка між подвійними лапками, не фіксуючи самі лапки.

Завантаження редактора…
Показати підказку

Замініть .+ на [^"]+: таким чином збіг зупиняється на наступній лапці.

Рішення доступне після 3 спроб

Повторна вправа

вправи#regex.m5.l3.e2
Спроби: 0Завантаження…

Знайдіть кожне слово, яке складається ТІЛЬКИ з приголосних (без голосних, без цифр і без символів).

Завантаження редактора…
Показати підказку

У дужках можна поєднати заперечення голосних із \\W (не слово) та \\d (цифри).

Рішення доступне після 3 спроб

Додатковий виклик

вправи#regex.m5.l3.e3
Спроби: 0Завантаження…

Зіставте послідовності з одного або кількох символів, явно виключаючи пробіли та коми.

Завантаження редактора…
Показати підказку

Використовуйте [^\\s,] з квантором +.

Рішення доступне після 3 спроб