Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Вивчайте Синтаксис Regex та базові шаблони | Вступ до регулярних виразів
Регулярні Вирази Python

Синтаксис Regex та базові шаблони

Свайпніть щоб показати меню

Синтаксис регулярних виразів: базові елементи

Регулярні вирази, або regex, складаються з комбінації літералів, метасимволів, класів символів та квантифікаторів. Розуміння цих компонентів є необхідним для написання ефективних шаблонів.

  • Літерали — це звичайні символи, які відповідають самим собі. Наприклад, шаблон "cat" співпадає з рядком "cat";
  • Метасимволи — це спеціальні символи, які мають особливе значення у регулярних виразах. Найпоширеніші метасимволи:
    • . (крапка): відповідає будь-якому одному символу, крім символу нового рядка;
    • ^: відповідає початку рядка;
    • $: відповідає кінцю рядка;
    • *: відповідає нулю або більше входженням попереднього елемента;
    • +: відповідає одному або більше входженням попереднього елемента;
    • ?: відповідає нулю або одному входженню попереднього елемента.
  • Класи символів дозволяють знаходити будь-який один символ із заданого набору. Наприклад, [abc] відповідає "a", "b" або "c", а [0-9] — будь-якій цифрі від 0 до 9.

Корисні літерні метасимволи та квантифікатори

  • \w: відповідає будь-якому словесному символу (еквівалентно [a-zA-Z0-9_]). Використовується для пошуку окремих літер, цифр або підкреслення;
  • \W: відповідає будь-якому не-словесному символу (усе, що не відповідає \w);
  • \d: відповідає будь-якій цифрі (еквівалентно [0-9]);
  • \D: відповідає будь-якому не-цифровому символу;
  • \b: відповідає межі слова (позиція між словесним і несловесним символом). Використовується для пошуку цілих слів;
  • \B: відповідає позиції, яка не є межею слова.

Квантифікатори

Квантифікатори визначають, скільки разів повинен зустрічатися попередній елемент:

  • *: відповідає нулю або більше разів; наприклад, \w* знаходить будь-яку послідовність словесних символів, включаючи порожній рядок;
  • +: відповідає одному або більше разів; наприклад, \w+ знаходить одну або більше послідовних словесних символів (наприклад, слово);
  • ?: відповідає нулю або одному разу; наприклад, \w? знаходить нуль або один словесний символ;
  • {n}: відповідає рівно n разів; наприклад, \w{3} знаходить рівно три словесні символи підряд;
  • {n,}: відповідає n або більше разів; наприклад, \w{2,} знаходить два або більше словесних символів;
  • {n,m}: відповідає від n до m разів; наприклад, \w{2,5} знаходить від двох до п’яти словесних символів підряд.

Приклади у Python

  • re.findall(r"\w+", "Regex123 is fun!") повертає всі слова: ["Regex123", "is", "fun"];
  • re.findall(r"\bcat\b", "The cat scattered the catalog.") знаходить лише окреме слово "cat";
  • re.findall(r"\w{5}", "apple banana kiwi") знаходить усі послідовності рівно з п’яти словесних символів: ["apple", "banan"].

Ці метасимволи та квантифікатори є основними для пошуку літер, слів і подібних до слів шаблонів у тексті за допомогою бібліотеки re у Python.

123456789101112131415
import re text = "User123, admin42, guestX" # Find all digits digits = re.findall(r"[0-9]", text) print("Digits found:", digits) # Find all lowercase letters lowercase_letters = re.findall(r"[a-z]", text) print("Lowercase letters found:", lowercase_letters) # Find all uppercase letters uppercase_letters = re.findall(r"[A-Z]", text) print("Uppercase letters found:", uppercase_letters)

У цьому прикладі використовується функція re.findall() для пошуку збігів у рядку "User123, admin42, guestX". Шаблон [0-9] відповідає будь-якій цифрі від 0 до 9, тому знаходить усі окремі цифри у тексті. Шаблон [a-z] відповідає будь-якій малій літері від "a" до "z", а [A-Z] — будь-якій великій літері від "A" до "Z". Кожен клас символів береться у квадратні дужки, що визначає діапазон або набір символів для пошуку. Ці шаблони є базовими для вилучення певних типів символів із тексту.

123456789101112131415161718192021222324252627
import re text = "Hello_123 world! Regex is fun." # \w matches any word character (alphanumeric or underscore) word_chars = re.findall(r"\w", text) print("Word characters (\\w):", word_chars) # \W matches any non-word character non_word_chars = re.findall(r"\W", text) print("Non-word characters (\\W):", non_word_chars) # \b matches word boundaries words = re.findall(r"\b\w+\b", text) print("Words using word boundaries (\\b):", words) # * quantifier: zero or more word characters after 'o' pattern_star = re.findall(r"o\w*", text) print("'o' followed by zero or more word characters (o\\w*):", pattern_star) # + quantifier: one or more word characters after 'R' pattern_plus = re.findall(r"R\w+", text) print("'R' followed by one or more word characters (R\\w+):", pattern_plus) # ? quantifier: 'l' optionally followed by 'e' pattern_question = re.findall(r"le?", text) print("'l' optionally followed by 'e' (le?):", pattern_question)

Тут показано, як використовувати функцію Python re.findall() з різними шаблонами регулярних виразів для вилучення інформації зі строки "Hello_123 world! Regex is fun.". Ось що робить кожен шаблон:

  • \w: Шаблон r"\w" відповідає будь-якому символьному символу, тобто літерам (як великим, так і малим), цифрам і підкресленню (_). У наведеному рядку це знаходить кожен окремий символьний символ, наприклад 'H', 'e', 'l', 'o', '1', '2', '3' тощо.

  • \W: Шаблон r"\W" відповідає будь-якому несимвольному символу. Це включає пробіли, розділові знаки та символи, які не є літерами, цифрами або підкресленням. У рядку це знаходить такі символи, як пробіли, знак оклику (!) і крапку (.).

  • \b: Шаблон r"\b\w+\b" використовує межі слова (\b) для знаходження цілих слів. Тут \w+ відповідає одному або більше символьним символам, тому цей шаблон виділяє цілі слова, такі як 'Hello_123', 'world', 'Regex', 'is' і 'fun' як окремі елементи.

  • Квантіфікатор *: Шаблон r"o\w*" знаходить символ 'o', за яким іде нуль або більше символьних символів. Це означає, що він знайде 'o' навіть якщо після нього немає символьних символів, або захопить послідовність, що починається з 'o' і продовжується будь-якими наступними символьними символами. У рядку це знаходить 'o_123''Hello_123') і 'orld''world').

  • Квантіфікатор +: Шаблон r"R\w+" знаходить символ 'R', за яким іде один або більше символьних символів. Це корисно для знаходження слів, що починаються з 'R' і продовжуються додатковими символьними символами. У рядку це знаходить 'Regex'.

  • Квантіфікатор ?: Шаблон r"le?" знаходить літеру 'l', за якою необов'язково йде 'e'. Квантіфікатор ? означає, що попередній символ ('e') може з'явитися нуль або один раз. Цей шаблон знайде як 'l', так і 'le' у рядку.

Кожен із цих шаблонів демонструє ключові можливості регулярних виразів — знаходження певних типів символів, меж слів і повторюваних елементів — що спрощує вилучення або аналіз інформації з тексту в Python.

question mark

Що відповідає шаблон регулярного виразу [a-z]?

Виберіть правильну відповідь

Все було зрозуміло?

Як ми можемо покращити це?

Дякуємо за ваш відгук!

Секція 1. Розділ 2

Запитати АІ

expand

Запитати АІ

ChatGPT

Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат

Синтаксис Regex та базові шаблони

Синтаксис регулярних виразів: базові елементи

Регулярні вирази, або regex, складаються з комбінації літералів, метасимволів, класів символів та квантифікаторів. Розуміння цих компонентів є необхідним для написання ефективних шаблонів.

  • Літерали — це звичайні символи, які відповідають самим собі. Наприклад, шаблон "cat" співпадає з рядком "cat";
  • Метасимволи — це спеціальні символи, які мають особливе значення у регулярних виразах. Найпоширеніші метасимволи:
    • . (крапка): відповідає будь-якому одному символу, крім символу нового рядка;
    • ^: відповідає початку рядка;
    • $: відповідає кінцю рядка;
    • *: відповідає нулю або більше входженням попереднього елемента;
    • +: відповідає одному або більше входженням попереднього елемента;
    • ?: відповідає нулю або одному входженню попереднього елемента.
  • Класи символів дозволяють знаходити будь-який один символ із заданого набору. Наприклад, [abc] відповідає "a", "b" або "c", а [0-9] — будь-якій цифрі від 0 до 9.

Корисні літерні метасимволи та квантифікатори

  • \w: відповідає будь-якому словесному символу (еквівалентно [a-zA-Z0-9_]). Використовується для пошуку окремих літер, цифр або підкреслення;
  • \W: відповідає будь-якому не-словесному символу (усе, що не відповідає \w);
  • \d: відповідає будь-якій цифрі (еквівалентно [0-9]);
  • \D: відповідає будь-якому не-цифровому символу;
  • \b: відповідає межі слова (позиція між словесним і несловесним символом). Використовується для пошуку цілих слів;
  • \B: відповідає позиції, яка не є межею слова.

Квантифікатори

Квантифікатори визначають, скільки разів повинен зустрічатися попередній елемент:

  • *: відповідає нулю або більше разів; наприклад, \w* знаходить будь-яку послідовність словесних символів, включаючи порожній рядок;
  • +: відповідає одному або більше разів; наприклад, \w+ знаходить одну або більше послідовних словесних символів (наприклад, слово);
  • ?: відповідає нулю або одному разу; наприклад, \w? знаходить нуль або один словесний символ;
  • {n}: відповідає рівно n разів; наприклад, \w{3} знаходить рівно три словесні символи підряд;
  • {n,}: відповідає n або більше разів; наприклад, \w{2,} знаходить два або більше словесних символів;
  • {n,m}: відповідає від n до m разів; наприклад, \w{2,5} знаходить від двох до п’яти словесних символів підряд.

Приклади у Python

  • re.findall(r"\w+", "Regex123 is fun!") повертає всі слова: ["Regex123", "is", "fun"];
  • re.findall(r"\bcat\b", "The cat scattered the catalog.") знаходить лише окреме слово "cat";
  • re.findall(r"\w{5}", "apple banana kiwi") знаходить усі послідовності рівно з п’яти словесних символів: ["apple", "banan"].

Ці метасимволи та квантифікатори є основними для пошуку літер, слів і подібних до слів шаблонів у тексті за допомогою бібліотеки re у Python.

123456789101112131415
import re text = "User123, admin42, guestX" # Find all digits digits = re.findall(r"[0-9]", text) print("Digits found:", digits) # Find all lowercase letters lowercase_letters = re.findall(r"[a-z]", text) print("Lowercase letters found:", lowercase_letters) # Find all uppercase letters uppercase_letters = re.findall(r"[A-Z]", text) print("Uppercase letters found:", uppercase_letters)

У цьому прикладі використовується функція re.findall() для пошуку збігів у рядку "User123, admin42, guestX". Шаблон [0-9] відповідає будь-якій цифрі від 0 до 9, тому знаходить усі окремі цифри у тексті. Шаблон [a-z] відповідає будь-якій малій літері від "a" до "z", а [A-Z] — будь-якій великій літері від "A" до "Z". Кожен клас символів береться у квадратні дужки, що визначає діапазон або набір символів для пошуку. Ці шаблони є базовими для вилучення певних типів символів із тексту.

123456789101112131415161718192021222324252627
import re text = "Hello_123 world! Regex is fun." # \w matches any word character (alphanumeric or underscore) word_chars = re.findall(r"\w", text) print("Word characters (\\w):", word_chars) # \W matches any non-word character non_word_chars = re.findall(r"\W", text) print("Non-word characters (\\W):", non_word_chars) # \b matches word boundaries words = re.findall(r"\b\w+\b", text) print("Words using word boundaries (\\b):", words) # * quantifier: zero or more word characters after 'o' pattern_star = re.findall(r"o\w*", text) print("'o' followed by zero or more word characters (o\\w*):", pattern_star) # + quantifier: one or more word characters after 'R' pattern_plus = re.findall(r"R\w+", text) print("'R' followed by one or more word characters (R\\w+):", pattern_plus) # ? quantifier: 'l' optionally followed by 'e' pattern_question = re.findall(r"le?", text) print("'l' optionally followed by 'e' (le?):", pattern_question)

Тут показано, як використовувати функцію Python re.findall() з різними шаблонами регулярних виразів для вилучення інформації зі строки "Hello_123 world! Regex is fun.". Ось що робить кожен шаблон:

  • \w: Шаблон r"\w" відповідає будь-якому символьному символу, тобто літерам (як великим, так і малим), цифрам і підкресленню (_). У наведеному рядку це знаходить кожен окремий символьний символ, наприклад 'H', 'e', 'l', 'o', '1', '2', '3' тощо.

  • \W: Шаблон r"\W" відповідає будь-якому несимвольному символу. Це включає пробіли, розділові знаки та символи, які не є літерами, цифрами або підкресленням. У рядку це знаходить такі символи, як пробіли, знак оклику (!) і крапку (.).

  • \b: Шаблон r"\b\w+\b" використовує межі слова (\b) для знаходження цілих слів. Тут \w+ відповідає одному або більше символьним символам, тому цей шаблон виділяє цілі слова, такі як 'Hello_123', 'world', 'Regex', 'is' і 'fun' як окремі елементи.

  • Квантіфікатор *: Шаблон r"o\w*" знаходить символ 'o', за яким іде нуль або більше символьних символів. Це означає, що він знайде 'o' навіть якщо після нього немає символьних символів, або захопить послідовність, що починається з 'o' і продовжується будь-якими наступними символьними символами. У рядку це знаходить 'o_123''Hello_123') і 'orld''world').

  • Квантіфікатор +: Шаблон r"R\w+" знаходить символ 'R', за яким іде один або більше символьних символів. Це корисно для знаходження слів, що починаються з 'R' і продовжуються додатковими символьними символами. У рядку це знаходить 'Regex'.

  • Квантіфікатор ?: Шаблон r"le?" знаходить літеру 'l', за якою необов'язково йде 'e'. Квантіфікатор ? означає, що попередній символ ('e') може з'явитися нуль або один раз. Цей шаблон знайде як 'l', так і 'le' у рядку.

Кожен із цих шаблонів демонструє ключові можливості регулярних виразів — знаходження певних типів символів, меж слів і повторюваних елементів — що спрощує вилучення або аналіз інформації з тексту в Python.

Все було зрозуміло?

Як ми можемо покращити це?

Дякуємо за ваш відгук!

Секція 1. Розділ 2
some-alt