Регулярний вираз (regex) призначений для вилучення необхідної інформації з будь-якого тексту, який базується на шаблонах. Вони також широко використовуються для маніпулювання текстами на основі шаблонів, що призводить до попередньої обробки тексту, і дуже корисні для впровадження цифрових навичок, як-от Обробка природної мови (NLP) .
Ця стаття демонструє, як використовувати регулярні вирази для заміни шаблонів, надаючи кілька прикладів, де кожен приклад є унікальним сценарієм. Це дуже необхідно зрозумітиre.sub()>методre>(регулярний вираз) для розуміння заданих рішень.
There.sub()>метод виконує глобальний пошук і глобальну заміну в заданому рядку. Він використовується для заміни певного шаблону в рядку. Всього у цієї функції 5 аргументів.
Синтаксис: re.sub(шаблон, repl, рядок, кількість=0, прапорці=0)
конкатенація рядківПараметри:
шаблон – шаблон, який потрібно шукати та замінити
repl – рядок, на який потрібно замінити шаблон
рядок – ім'я змінної, в якій зберігається шаблон
count – кількість символів, до яких буде виконана підстановка
прапорці – використовується для зміни значення шаблону регулярного виразу
count>іflags>є необов'язковими аргументами.
Приклад 1: Заміна конкретного текстового шаблону
У цьому прикладі заданий текстовий шаблон шукатиметься та замінюватиметься в рядку. Ідея полягає в тому, щоб використовувати звичайну формуre.sub()>метод лише з першими 3 аргументами.
Нижче наведено реалізацію.
# Python implementation of substituting a> # specific text pattern in a string using regex> > # importing regex module> import> re> > # Function to perform> # operations on the strings> def> substitutor():> > ># a string variable> >sentence1>=> 'It is raining outside.'> > ># replacing text 'raining' in the string> ># variable sentence1 with 'sunny' thus> ># passing first parameter as raining> ># second as sunny, third as the> ># variable name in which string is stored> ># and printing the modified string> >print>(re.sub(r>'raining'>,>'sunny'>, sentence1))> > ># a string variable> >sentence2>=> 'Thank you very very much.'> > ># replacing text 'very' in the string> ># variable sentence2 with 'so' thus> ># passing parameters at their> ># appropriate positions and printing> ># the modified string> >print>(re.sub(r>'very'>,>'so'>, sentence2))> > # Driver Code:> substitutor()> |
>
>Вихід:
It is sunny outside. Thank you so so much.>
Незалежно від того, скільки разів необхідний шаблон присутній у рядку,
re.sub()>функція замінює їх усіх заданим шаблоном. Ось чому обидва «дуже» замінено на «так» у наведеному вище прикладі.
Приклад 2: заміна набору символів конкретним символом
Завдання полягає в заміні набору символів заданим символом. Набір символів означає діапазон символів. Вre.sub()>метод набір символів записується всередині [ ](квадратні дужки).
У цьому прикладі набір символів нижнього регістру, тобто [a-z], буде замінено на цифру 0. Нижче наведено реалізацію.
альфа бета обрізка
# Python implementation of substituting> # a character set with a specific character> > # importing regex module> import> re> > # Function to perform> # operations on the strings> def> substitutor():> > ># a string variable> >sentence>=> '22 April is celebrated as Earth Day.'> > ># replacing every lower case characters> ># in the variable sentence with 0 and> ># printing the modified string> >print>(re.sub(r>'[a-z]'>,>'0'>, sentence))> > # Driver Code:> substitutor()> |
>
>Вихід:
22 A0000 00 0000000000 00 E0000 D00.>
Якщо є потреба замінити набір символів як у нижньому, так і у верхньому регістрі, ми повинні ввести набір символів у верхньому регістрі таким чином: [a-zA-Z] або ефективний спосіб зробити це за допомогою прапорів.
Приклад 3: заміна набору символів конкретним символом без урахування регістру
У цьому прикладі як малі, так і великі символи буде замінено на заданий символ. З використанням прапори , це завдання можна виконати дуже легко.
There.I>прапор означає ре. IGNORECASE . Впровадивши цей прапор у вre.sub()>метод і згадуючи будь-який один набір символів, тобто нижній або великий регістр, завдання може бути виконане.
Нижче наведено реалізацію.
# Python implementation of case-insensitive substitution> # of a character set with a specific character> > # importing regex module> import> re> > # Function to perform> # operations on the strings> def> substitutor():> > ># a string variable> >sentence>=> '22 April is celebrated as Earth Day.'> > ># replacing both lowercase and> ># uppercase characters with 0 in> ># the variable sentence by using> ># flag and printing the modified string> >print>(re.sub(r>'[a-z]'>,>'0'>, sentence, flags>=> re.I))> > # Driver Code:> substitutor()> |
livecricket.is
>
>Вихід:
22 00000 00 0000000000 00 00000 000.>
Приклад 4: Виконайте заміну до певної кількості символів
У цьому прикладі підстановка здійснюватиметься до певної кількості символів, а не до всього рядка. Щоб виконати цей тип заміни,re.sub()>метод має аргументcount>.
Надаючи цьому аргументу числове значення, можна контролювати кількість символів, у яких відбуватиметься заміна. Нижче наведено реалізацію.
# Python implementation to perform substitution> # up to a certain number of characters> > # importing regex module> import> re> > # Function to perform> # operations on the strings> def> substitutor():> > ># a string variable> >sentence>=> 'Follow your Passion.'> > ># case-insensitive substitution> ># on variable sentence upto> ># eight characters and printing> ># the modified string> >print>(re.sub(r>'[a-z]'>,>'0'>, sentence,>8>, flags>=> re.I))> > # Driver Code:> substitutor()> |
>
>Вихід:
000000 00ur Passion.>
Приклад 5: Підстановка з використанням класу скорочених символів і попередня обробка тексту
Модуль Regex надає багато класів скорочених символів для тих наборів символів, які є дуже поширеними під час попередньої обробки тексту. Використання класу скорочених символів призводить до написання ефективного коду та зменшує потребу запам’ятовувати діапазон кожного набору символів.
java перетворює int на рядок
Щоб отримати докладне пояснення класу скорочених символів і того, як написати регулярний вираз у Python для попередньої обробки тексту, натисніть тут . Нижче наведено деякі з часто використовуваних класів скорочених символів:
w: відповідає буквено-цифровим символам
W: відповідає не буквено-цифровим символам, таким як @, #, ‘, +, %, –
d: відповідає символам цифр
s: відповідає пробіламЗначення деякого синтаксису:
додавання символу плюс (+) після класу або набору символів: повторення попереднього класу або набору символів принаймні 1 або більше разів.додавання символу зірочки (*) після класу або набору символів: повторення попереднього класу або набору символів принаймні 0 або більше разів.
додавання символу вставки (^) перед класом або набором символів: відповідна позиція визначається для цього класу символів або набору на початку рядка.
додавання символу долара ($) після класу символів або набору: відповідна позиція визначається для цього класу символів або набору в кінці рядка.
Цей приклад демонструє використання згаданих класів скорочених символів для підстановки та попередньої обробки тексту для отримання чистих і безпомилкових рядків. Нижче наведено реалізацію.
# Python implementation of Substitution using> # shorthand character class and preprocessing of text> > # importing regex module> import> re> > # Function to perform> # operations on the strings> def> substitutor():> > ># list of strings> >S>=> [>'2020 Olympic games have @# been cancelled'>,> >'Dr Vikram Sarabhai was +%--the ISRO’s first chairman'>,> >'Dr Abdul Kalam, the father of India's missile programme'>]> > ># loop to iterate every element of list> >for> i>in> range>(>len>(S)):> > ># replacing every non-word character with a white space> >S[i]>=> re.sub(r>'W'>,>' '>, S[i])> > ># replacing every digit character with a white space> >S[i]>=> re.sub(r>'d'>,>' '>, S[i])> > ># replacing one or more white space with a single white space> >S[i]>=> re.sub(r>'s+'>,>' '>, S[i])> > ># replacing alphabetic characters which have one or more> ># white space before and after them with a white space> >S[i]>=> re.sub(r>'s+[a-z]s+'>,>' '>, S[i], flags>=> re.I)> > ># substituting one or more white space which is at> ># beginning of the string with an empty string> >S[i]>=> re.sub(r>'^s+'>, '', S[i])> > ># substituting one or more white space which is at> ># end of the string with an empty string> >S[i]>=> re.sub(r>'s+$'>, '', S[i])> > ># loop to iterate every element of list> >for> i>in> range>(>len>(S)):> > ># printing each modified string> >print>(S[i])> > # Driver Code:> substitutor()> |
>
>Вихід:
Olympic games have been cancelled Dr Vikram Sarabhai was the ISRO first chairman Dr Abdul Kalam the father of India missile programme>