А Регулярний вираз або RegEx це спеціальна послідовність символів, яка використовує шаблон пошуку для пошуку рядка або набору рядків.
Він може виявити наявність або відсутність тексту, зіставляючи його з певним шаблоном, а також може розділити шаблон на один або кілька підшаблонів.
Модуль Regex у Python
Python має вбудований модуль під назвою повторно який використовується для регулярних виразів у Python. Ми можемо імпортувати цей модуль за допомогою оператора import.
приклад: Імпорт повторного модуля в Python
Python3
# importing re module> import> re> |
>
>
Як використовувати RegEx у Python?
Ви можете використовувати RegEx у Python після імпортування модуля re.
приклад:
Цей код Python використовує регулярні вирази для пошуку слова портал у вказаному рядку, а потім друкує початковий і кінцевий індекси відповідного слова в рядку.
Python3
import> re> > s>=> 'techcodeview.com: A computer science portal for geeks'> > match>=> re.search(r>'portal'>, s)> > print>(>'Start Index:'>, match.start())> print>(>'End Index:'>, match.end())> |
>
>Вихід
Start Index: 34 End Index: 40>
Примітка: Тут символ r (r’portal’) позначає raw, а не regex. Необроблений рядок дещо відрізняється від звичайного рядка, він не сприйматиме символ як контрольний символ. Це тому, що система регулярних виразів використовує символ для власної мети екранування.
Перш ніж почати роботу з модулем регулярних виразів Python, давайте подивимося, як насправді писати регулярні вирази за допомогою метасимволів або спеціальних послідовностей.
Метасимволи
Метасимволи - це символи зі спеціальним значенням.
Щоб зрозуміти аналогію RE, метасимволи корисні та важливі. Вони будуть використовуватися у функціях модуля re. Нижче наведено список метасимволів.
| Метасимволи | опис |
|---|---|
| Використовується для видалення особливого значення наступного символу підручник hadoop | |
| [] | Представляє клас символів |
| ^ | Збігається з початком |
| $ | Збігається з кінцем |
| . | Відповідає будь-якому символу, крім нового рядка |
| | | Означає АБО (Збігається з будь-яким символом, розділеним ним. |
| ? | Відповідає нулю або одному входженню |
| * | Будь-яка кількість випадків (включаючи 0 випадків) |
| + | Один або кілька випадків |
| {} | Укажіть кількість входжень попереднього регулярного виразу для відповідності. |
| () | Включіть групу регулярних виразів |
Давайте обговоримо кожен із цих метасимволів докладніше:
1. – Зворотна коса риска
Зворотний слеш () гарантує, що символ не обробляється особливим чином. Це можна вважати способом екранування метасимволів.
Наприклад, якщо ви хочете шукати крапку (.) у рядку, ви побачите, що крапка (.) розглядатиметься як спеціальний символ, як один із метасимволів (як показано в таблиці вище). Тож у цьому випадку ми використаємо зворотну косу риску () безпосередньо перед крапкою (.), щоб вона втратила свою особливість. Перегляньте наведений нижче приклад для кращого розуміння.
приклад:
Перший пошук ( re.search(r'.', s)> ) відповідає будь-якому символу, а не лише крапці, тоді як другий пошук ( re.search(r'.', s)> ) спеціально шукає та збігає символ періоду.
Python3
import> re> > s>=> 'geeks.forgeeks'> > # without using> match>=> re.search(r>'.'>, s)> print>(match)> > # using> match>=> re.search(r>'.'>, s)> print>(match)> |
>
>Вихід
>
2. [] – квадратні дужки
Квадратні дужки ([]) представляють клас символів, що складається з набору символів, які ми хочемо зіставити. Наприклад, клас символів [abc] відповідатиме будь-якому одному a, b чи c.
Ми також можемо вказати діапазон символів за допомогою – в квадратних дужках. Наприклад,
- [0, 3] є зразком [0123]
- [a-c] те саме, що [abc]
Ми також можемо інвертувати клас символів за допомогою символу вставки (^). Наприклад,
- [^0-3] означає будь-яке число, крім 0, 1, 2 або 3
- [^a-c] означає будь-який символ, крім a, b або c
приклад:
У цьому коді ви використовуєте регулярні вирази, щоб знайти всі символи в рядку, які належать до діапазону від «a» до «m». The re.findall()> функція повертає список усіх таких символів. У заданому рядку символи, які відповідають цьому шаблону: 'c', 'k', 'b', 'f', 'j', 'e', 'h', 'l', 'd', ' g'.
Python3
import> re> > string>=> 'The quick brown fox jumps over the lazy dog'> pattern>=> '[a-m]'> result>=> re.findall(pattern, string)> > print>(result)> |
>
баш еліф
>Вихід
['h', 'e', 'i', 'c', 'k', 'b', 'f', 'j', 'm', 'e', 'h', 'e', 'l', 'a', 'd', 'g']>
3. ^ – Каретка
Символ вставки (^) відповідає початку рядка, тобто перевіряє, чи починається рядок із заданого(их) символу(ів) чи ні. Наприклад -
- ^g перевірить, чи починається рядок з g, як-от geeks, globe, girl, g тощо.
- ^ge перевірить, чи починається рядок з ge, як-от geeks, geeksforgeeks тощо.
приклад:
Цей код використовує регулярні вирази, щоб перевірити, чи починається список рядків The . Якщо рядок починається з Це позначено як відповідність інакше позначається як Не збігається.
Python3
import> re> regex>=> r>'^The'> strings>=> [>'The quick brown fox'>,>'The lazy dog'>,>'A quick brown fox'>]> for> string>in> strings:> >if> re.match(regex, string):> >print>(f>'Matched: {string}'>)> >else>:> >print>(f>'Not matched: {string}'>)> |
>
>Вихід
Matched: The quick brown fox Matched: The lazy dog Not matched: A quick brown fox>
4. $ – долар
Символ долара ($) збігається з кінцем рядка, тобто перевіряє, чи закінчується рядок заданим символом (символами) чи ні. Наприклад-
- s$ перевірить рядок, який закінчується на a, як-от geeks, ends, s тощо.
- ks$ перевірить рядок, який закінчується на ks, наприклад geeks, geeksforgeeks, ks тощо.
приклад:
Цей код використовує регулярний вираз, щоб перевірити, чи закінчується рядок на Світ!. Якщо збіг знайдено, він друкується Збіг знайдено! інакше він друкує Збіг не знайдено .
Python3
import> re> > string>=> 'Hello World!'> pattern>=> r>'World!$'> > match>=> re.search(pattern, string)> if> match:> >print>(>'Match found!'>)> else>:> >print>(>'Match not found.'>)> |
>
>Вихід
Match found!>
5. . - Крапка
Символ крапки (.) відповідає лише одному символу, за винятком символу нового рядка ( ). Наприклад -
- a.b перевірить рядок, який містить будь-який символ на місці крапки, наприклад acb, acbd, abbb тощо
- .. перевірить, чи містить рядок принаймні 2 символи
приклад:
Цей код використовує регулярний вираз для пошуку шаблону коричневий.лисиця в межах рядка. крапка (.>) у шаблоні представляє будь-який символ. Якщо збіг знайдено, він друкується Збіг знайдено! інакше він друкує Збіг не знайдено .
Python3
import> re> > string>=> 'The quick brown fox jumps over the lazy dog.'> pattern>=> r>'brown.fox'> > match>=> re.search(pattern, string)> if> match:> >print>(>'Match found!'>)> else>:> >print>(>'Match not found.'>)> |
>
>Вихід
Match found!>
6. | – Або
Символ або працює як оператор або, тобто він перевіряє, чи присутній у рядку шаблон до або після символу або. Наприклад -
- a|b відповідатиме будь-якому рядку, який містить a або b, наприклад acd, bcd, abcd тощо.
7. ? - Знак питання
Знак питання (?) — це квантор у регулярних виразах, який вказує на те, що попередній елемент має відповідати нуль або один раз. Це дозволяє вказати, що елемент є необов’язковим, тобто він може зустрічатися один раз або не зустрічатися взагалі. Наприклад,
- ab?c буде зіставлено для рядка ac, acb, dabc, але не буде зіставлено для abbc, оскільки є два b. Подібним чином, він не буде зіставлений для abdc, оскільки b не слідує за c.
8.* – Зірка
Символ зірочки (*) відповідає нулю або більше повторень регулярного виразу, що передує символу *. Наприклад -
- ab*c буде зіставлено для рядка ac, abc, abbbc, dabc тощо, але не буде зіставлено для abdc, оскільки b не слідує за c.
9. + – Плюс
Символ плюс (+) відповідає одному або декільком випадкам регулярного виразу, що передує символу +. Наприклад -
- ab+c буде зіставлено для рядка abc, abbc, dabc, але не буде зіставлено для ac, abdc, тому що немає b в ac і b, не слідує c в abdc.
10. {m, n} – фігурні дужки
Дужки відповідають будь-яким повторенням перед регулярним виразом від m до n включно. Наприклад -
- a{2, 4} буде зіставлено для рядка aaab, baaaac, gaad, але не буде зіставлено для рядків, таких як abc, bc, оскільки в обох випадках є лише один a або немає a.
11. () – Група
Символ групи використовується для групування підшаблонів. Наприклад -
- (a|b)cd відповідатиме таким рядкам, як acd, abcd, gacd тощо.
Спеціальні послідовності
Спеціальні послідовності не збігаються з фактичним символом у рядку, натомість вони вказують конкретне місце в рядку пошуку, де має відбутися збіг. Це полегшує написання часто використовуваних шаблонів.
Список спеціальних послідовностей
| Особлива послідовність | опис | Приклади | |
|---|---|---|---|
| А | Збігається, якщо рядок починається з заданого символу | Афор | для гіків |
| для світу | |||
| Збігається, якщо слово починається або закінчується заданим символом. (string) перевірить початок слова, а (string) перевірить закінчення слова. | ge | вундеркінди | |
| отримати | |||
| B | Це протилежність , тобто рядок не повинен починатися або закінчуватися даним регулярним виразом. | Bge | разом |
| кузня | |||
| d | Збігається з будь-якою десятковою цифрою, це еквівалентно встановленому класу [0-9] | d | 123 |
| gee1 | |||
| D | Відповідає будь-якому нецифровому символу, це еквівалентно встановленому класу [^0-9] | D | вундеркінди |
| geek1 | |||
| s | Відповідає будь-якому пробілу. | s | джи кс |
| a bc a | |||
| S | Відповідає будь-якому непробільному символу | S | a bd |
| а Б В Г | |||
| В | Відповідає будь-якому буквено-цифровому символу, це еквівалентно класу [a-zA-Z0-9_]. | В | 123 |
| geeKs4 | |||
| IN | Відповідає будь-якому небуквено-цифровому символу. | IN | >$ |
| дати | |||
| З | Збігається, якщо рядок закінчується вказаним регулярним виразом | ab | abcdab |
| бабабаб |
Функції регулярних виразів
повторно модуль містить багато функції які допомагають нам шукати збіг у рядку.
Давайте розглянемо різні функції, які надає цей модуль для роботи з регулярними виразами в Python.
| функція | опис |
|---|---|
| re.findall() | знаходить і повертає всі збіги в списку |
| re.compile() | Регулярні вирази компілюються в шаблонні об’єкти |
| re.split() | Розділіть рядок за входженнями символу або шаблону. |
| re.sub() | Замінює всі входження символу або скоромовки на рядок заміни. |
| re.escape() | Екранує спеціальний символ |
| re.search() | Шукає перше входження символу або шаблону |
Давайте подивимося на роботу цих функцій RegEx із визначенням і прикладами:
1. re.findall()
Повертає всі неперекриваючі збіги шаблону в рядку у вигляді списку рядків. Рядок сканується зліва направо, і збіги повертаються в порядку знайдення.
Пошук усіх входжень шаблону
Цей код використовує регулярний вираз ( d+> ) щоб знайти всі послідовності однієї чи кількох цифр у заданому рядку. Він шукає числові значення та зберігає їх у списку. У цьому прикладі він знаходить і друкує числа 123456789 і 987654321 із вхідного рядка.
Python3
import> re> string>=> '''Hello my Number is 123456789 and> >my friend's number is 987654321'''> regex>=> 'd+'> > match>=> re.findall(regex, string)> print>(match)> |
>
>Вихід
['123456789', '987654321']>
2. re.compile()
Регулярні вирази компілюються в об’єкти шаблонів, які мають методи для різноманітних операцій, таких як пошук збігів шаблону або виконання підстановки рядків.
Приклад 1:
У коді використовується шаблон регулярного виразу [a-e]> щоб знайти та перерахувати всі малі літери від «a» до «e» у вхідному рядку Так, сказав містер Гібенсон Старк. Вихід буде ['e', 'a', 'd', 'b', 'e']> , які є відповідними символами.
Python
import> re> p>=> re.>compile>(>'[a-e]'>)> > print>(p.findall(>'Aye, said Mr. Gibenson Stark'>))> |
numpy meshgrid
>
>Вихід
['e', 'a', 'd', 'b', 'e', 'a']>
Розуміння результату:
- Першим входженням є «e» в Aye, а не «A», оскільки воно чутливе до регістру.
- Наступна подія — це «a» у сказаному, потім «d» у сказаному, а потім «b» і «e» у Gibenson, останній «a» збігається зі Старком.
- Метасимвол зворотної косої риски «» відіграє дуже важливу роль, оскільки він сигналізує про різні послідовності. Якщо зворотну скісну риску потрібно використовувати без спеціального значення як метасимвол, використовуйте «»
приклад 2: Набір класу [s,.] відповідатиме будь-якому пробілу, ‘,’ або ‘.’ .
У цьому коді використовуються регулярні вирази для пошуку та перерахування всіх одиночних цифр і послідовностей цифр у заданих вхідних рядках. Він знаходить однозначні цифри за допомогою d> і послідовності цифр с d+> .
Python
import> re> p>=> re.>compile>(>'d'>)> print>(p.findall(>'I went to him at 11 A.M. on 4th July 1886'>))> > p>=> re.>compile>(>'d+'>)> print>(p.findall(>'I went to him at 11 A.M. on 4th July 1886'>))> |
>
>Вихід
['1', '1', '4', '1', '8', '8', '6'] ['11', '4', '1886']>
приклад 3:
У цьому коді використовуються регулярні вирази для пошуку та переліку символів слів, послідовностей символів слів і символів, які не є словами, у вхідних рядках. Він надає списки відповідних символів або послідовностей.
Python
import> re> > p>=> re.>compile>(>'w'>)> print>(p.findall(>'He said * in some_lang.'>))> > p>=> re.>compile>(>'w+'>)> print>(p.findall('I went to him at>11> A.M., he> said>*>*>*> in> some_language.'))> > p>=> re.>compile>(>'W'>)> print>(p.findall(>'he said *** in some_language.'>))> |
>
>Вихід
['H', 'e', 's', 'a', 'i', 'd', 'i', 'n', 's', 'o', 'm', 'e', '_', 'l', 'a', 'n', 'g'] ['I', 'went', 'to', 'him', 'at', '11', 'A', 'M', 'he', 'said', 'in', 'some_language'] [' ', ' ', '*', '*', '*', ' ...>
Приклад 4:
У коді використовується шаблон регулярного виразу «ab*», щоб знайти та перерахувати всі випадки «ab», за якими йде нуль або більше символів «b» у вхідному рядку ababbaabbb. Він повертає такий список збігів: [‘ab’, ‘abb’, ‘abbb’].
Python
import> re> p>=> re.>compile>(>'ab*'>)> print>(p.findall(>'ababbaabbb'>))> |
>
java замінити все
>Вихід
['ab', 'abb', 'a', 'abbb']>
Розуміння результату:
- Наш RE – це ab*, яке супроводжується будь-яким «ні». букв «b», починаючи з 0.
- Вихідні дані «ab» є дійсними через одиничне «a» з одним «b».
- Вихідні дані «abb» дійсні через одиночне «a», яке супроводжується двома «b».
- Вихідні дані «a» дійсні через одиночне «a», яке супроводжується 0 «b».
- Вихідні дані «abbb» є дійсними через одиночне «a», яке супроводжується 3 «b».
3. re.split()
Розділіть рядок за входженнями символу або шаблону, після знаходження цього шаблону символи, що залишилися з рядка, повертаються як частина результуючого списку.
Синтаксис:
re.split(pattern, string, maxsplit=0, flags=0)>
Перший параметр, шаблон позначає регулярний вираз, рядок — заданий рядок, у якому шукатиметься шаблон і в якому відбувається розбиття, maxsplit, якщо не надано, вважається нульовим «0», а якщо надано будь-яке ненульове значення, то відбувається щонайбільше стільки розколів. Якщо maxsplit = 1, то рядок буде розділено лише один раз, у результаті чого буде створено список довжиною 2. Прапори є дуже корисними та можуть допомогти скоротити код, вони не є необхідними параметрами, наприклад: flags = re.IGNORECASE, у цьому розділенні , регістр, тобто малі або великі літери, буде проігноровано.
Приклад 1:
Розділяє рядок, використовуючи несловні символи та пробіли як роздільники, повертаючи слова: ['Words', 'words', 'Words']> . Вважає апостроф несловесним символом: ['Word', 's', 'words', 'Words']> . Розділяє за допомогою несловних символів і цифр: ['On', '12th', 'Jan', '2016', 'at', '11', '02', 'AM']> . Розділяє цифри як роздільник: ['On ', 'th Jan ', ', at ', ':', ' AM']> .
Python
from> re>import> split> > print>(split(>'W+'>,>'Words, words , Words'>))> print>(split(>'W+'>,>'Word's words Words'>))> print>(split(>'W+'>,>'On 12th Jan 2016, at 11:02 AM'>))> print>(split(>'d+'>,>'On 12th Jan 2016, at 11:02 AM'>))> |
>
>Вихід
['Words', 'words', 'Words'] ['Word', 's', 'words', 'Words'] ['On', '12th', 'Jan', '2016', 'at', '11', '02', 'AM'] ['On ', 'th Jan ', ', at ', ':', ' AM']>
приклад 2:
Інструкція First розділяє рядок при першому входженні однієї чи кількох цифр: ['On ', 'th Jan 2016, at 11:02 AM']> . second розділяє рядок, використовуючи малі літери від a до f як розділювачі, незалежні від регістру: ['', 'y, ', 'oy oh ', 'oy, ', 'ome here'> ]>. Третій розділяє рядок, використовуючи малі літери від a до f як розділювачі, чутливі до регістру: ['', 'ey, Boy oh ', 'oy, ', 'ome here']> .
Python
import> re> print>(re.split(>'d+'>,>'On 12th Jan 2016, at 11:02 AM'>,>1>))> print>(re.split(>'[a-f]+'>,>'Aey, Boy oh boy, come here'>, flags>=>re.IGNORECASE))> print>(re.split(>'[a-f]+'>,>'Aey, Boy oh boy, come here'>))> |
>
>Вихід
['On ', 'th Jan 2016, at 11:02 AM'] ['', 'y, ', 'oy oh ', 'oy, ', 'om', ' h', 'r', ''] ['A', 'y, Boy oh ', 'oy, ', 'om', ' h', 'r', '']>
4. re.sub()
«Sub» у функції означає SubString, певний шаблон регулярного виразу шукається в заданому рядку (3-й параметр), і після знаходження шаблону підрядка замінюється на repl (2-й параметр), перевіряється підрахунок і зберігається кількість разів це відбувається.
Синтаксис:
re.sub(pattern, repl, string, count=0, flags=0)>
Приклад 1:
- Перший оператор замінює всі входження «ub» на «~*» (незалежно від регістру):
'S~*ject has ~*er booked already'>. - Другий оператор замінює всі входження «ub» на «~*» (з урахуванням регістру):
'S~*ject has Uber booked already'>. - Третій оператор замінює перше входження «ub» на «~*» (незалежно від регістру):
'S~*ject has Uber booked already'>. - Четвертий замінює «І» на «&» (незалежно від регістру):
'Baked Beans & Spam'>.
Python
import> re> print>(re.sub(>'ub'>,>'~*'>,>'Subject has Uber booked already'>,> >flags>=>re.IGNORECASE))> print>(re.sub(>'ub'>,>'~*'>,>'Subject has Uber booked already'>))> print>(re.sub(>'ub'>,>'~*'>,>'Subject has Uber booked already'>,> >count>=>1>, flags>=>re.IGNORECASE))> print>(re.sub(r>'sANDs'>,>' & '>,>'Baked Beans And Spam'>,> >flags>=>re.IGNORECASE))> |
>
>Вихід
S~*ject has ~*er booked already S~*ject has Uber booked already S~*ject has Uber booked already Baked Beans & Spam>
5. re.subn()
subn() подібний до sub() у всіх відношеннях, крім способу надання виводу. Він повертає кортеж із загальною кількістю замін і новий рядок, а не просто рядок.
Синтаксис:
re.subn(pattern, repl, string, count=0, flags=0)>
приклад:
re.subn()> замінює всі випадки шаблону в рядку та повертає кортеж із зміненим рядком і кількістю зроблених замін. Це корисно як для чутливих до регістру, так і для замін.
Python
import> re> > print>(re.subn(>'ub'>,>'~*'>,>'Subject has Uber booked already'>))> > t>=> re.subn(>'ub'>,>'~*'>,>'Subject has Uber booked already'>,> >flags>=>re.IGNORECASE)> print>(t)> print>(>len>(t))> print>(t[>0>])> |
>
>Вихід
('S~*ject has Uber booked already', 1) ('S~*ject has ~*er booked already', 2) 2 S~*ject has ~*er booked already> 6. re.escape()
Повертає рядок із зворотною похилою рискою, яка не є буквено-цифровим символом. Це корисно, якщо ви хочете зіставити довільний рядок літералу, який може містити метасимволи регулярного виразу.
Синтаксис:
re.escape(string)>
приклад:
re.escape()> використовується для екранування спеціальних символів у рядку, що робить його безпечним для використання як шаблон у регулярних виразах. Це гарантує, що будь-які символи зі спеціальним значенням у регулярних виразах розглядаються як літеральні символи.
Python
import> re> print>(re.escape(>'This is Awesome even 1 AM'>))> print>(re.escape(>'I Asked what is this [a-9], he said ^WoW'>))> |
>
>Вихід
This is Awesome even 1 AM I Asked what is this [a-9], he said ^WoW>
7. re.search()
Цей метод або повертає None (якщо шаблон не збігається), або re.MatchObject містить інформацію про відповідну частину рядка. Цей метод зупиняється після першого збігу, тому він найкраще підходить для тестування регулярного виразу, а не для вилучення даних.
приклад: Пошук входження шаблону
Цей код використовує регулярний вираз для пошуку шаблону в заданому рядку. Якщо збіг знайдено, він витягує та друкує відповідні частини рядка.
У цьому конкретному прикладі він шукає шаблон, який складається з місяця (літери), після якого йде день (цифри) у вхідному рядку Я народився 24 червня. Якщо збіг знайдено, він друкує повний збіг, місяць , і день.
Python3
import> re> regex>=> r>'([a-zA-Z]+) (d+)'> > match>=> re.search(regex,>'I was born on June 24'>)> if> match !>=> None>:> >print> (>'Match at index %s, %s'> %> (match.start(), match.end()))> >print> (>'Full match: %s'> %> (match.group(>0>)))> >print> (>'Month: %s'> %> (match.group(>1>)))> >print> (>'Day: %s'> %> (match.group(>2>)))> > else>:> >print> (>'The regex pattern does not match.'>)> |
>
Java string replaceall
>Вихід
Match at index 14, 21 Full match: June 24 Month: June Day: 24>
НАБОРИ
А встановити це набір символів, укладених у квадратні дужки «[]». Набори використовуються для відповідності одному символу в наборі символів, указаному в дужках. Нижче наведено список наборів:
| встановити | опис |
|---|---|
| {n,} | Визначає кількісно попередній символ або групу та відповідає принаймні n входжень. |
| * | Визначає кількісно попередній символ або групу та відповідає нулю або більше входжень. |
| [0123] | Відповідає вказаним цифрам (0, 1, 2 або 3) |
| [^arn] | відповідає будь-якому символу, КРІМ a, r і n |
| d | Відповідає будь-якій цифрі (0-9). |
| [0-5][0-9] | відповідає будь-яким двозначним числам від 00 до 59 |
| В | Відповідає будь-якому алфавітно-цифровому символу (a-z, A-Z, 0-9 або _). |
| [a-n] | Відповідає будь-якому нижньому регістру алфавіту від a до n. |
| D | Відповідає будь-якому нецифровому символу. |
| [арн] | збігається з одним із зазначених символів (a, r або n). |
| [a-zA-Z] | відповідає будь-якому символу від a до z, нижньому АБО верхньому регістру |
| [0-9] | відповідає будь-якій цифрі від 0 до 9 |
Збіг об’єкта
Об’єкт Match містить усю інформацію про пошук і результат, і якщо відповідності не знайдено, буде повернено None. Давайте розглянемо деякі з часто використовуваних методів і атрибутів об’єкта відповідності.
1. Отримання рядка та регулярного виразу
match.re атрибут повертає переданий регулярний вираз and match.string атрибут повертає переданий рядок.
приклад: Отримання рядка та регулярного виразу відповідного об’єкта
Код шукає літеру Г на межі слова в рядку Ласкаво просимо до GeeksForGeeks і друкує шаблон регулярного виразу ( res.re> ) і вихідний рядок ( res.string> ) .
Python3
import> re> s>=> 'Welcome to GeeksForGeeks'> res>=> re.search(r>'G'>, s)> > print>(res.re)> print>(res.string)> |
>
>Вихід
re.compile('G') Welcome to GeeksForGeeks> 2. Отримання індексу відповідного об'єкта
- метод start() повертає початковий індекс відповідного підрядка
- метод end() повертає кінцевий індекс відповідного підрядка
- Метод span() повертає кортеж, що містить початковий і кінцевий індекс відповідного підрядка
приклад: Отримання індексу відповідного об’єкта
Код шукає підрядок Gee на межі слова в рядку Welcome to GeeksForGeeks і друкує початковий індекс збігу (res.start()>), кінцевий індекс збігу (res.end()>), і проміжок збігу (res.span()>).
Python3
import> re> > s>=> 'Welcome to GeeksForGeeks'> > res>=> re.search(r>'Gee'>, s)> > print>(res.start())> print>(res.end())> print>(res.span())> |
>
>Вихід
11 14 (11, 14)>
3. Отримання відповідного підрядка
метод group() повертає частину рядка, для якої збігаються шаблони. Перегляньте наведений нижче приклад для кращого розуміння.
приклад: Отримання відповідного підрядка
Код шукає послідовність із двох нецифрових символів, за якими йде пробіл і літера «t» у рядку Welcome to GeeksForGeeks, і друкує відповідний текст за допомогою res.group()> .
Python3
import> re> s>=> 'Welcome to GeeksForGeeks'> res>=> re.search(r>'D{2} t'>, s)> print>(res.group())> |
>
>Вихід
me t>
У наведеному вище прикладі наш шаблон вказує на рядок, який містить принаймні 2 символи, за якими йде пробіл, після якого йде t.
Пов'язана стаття:
Посилання:
https://docs.python.org/2/library/re.html
Ми обговорили RegEx у Python, ми розглянули метасимволи, функції та спеціальні послідовності в RegEx Python.
Регулярні вирази є дуже важливою концепцією в Python, ми спробували пояснити це простим способом. Сподіваюся, це допоможе у вашій подорожі Python!!