Синтаксис 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.
123456789101112131415import 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". Кожен клас символів береться у квадратні дужки, що визначає діапазон або набір символів для пошуку. Ці шаблони є базовими для вилучення певних типів символів із тексту.
123456789101112131415161718192021222324252627import 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.
Дякуємо за ваш відгук!
Запитати АІ
Запитати АІ
Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат
Синтаксис 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.
123456789101112131415import 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". Кожен клас символів береться у квадратні дужки, що визначає діапазон або набір символів для пошуку. Ці шаблони є базовими для вилучення певних типів символів із тексту.
123456789101112131415161718192021222324252627import 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.
Дякуємо за ваш відгук!