Wyrażenie regularne (regex) służy do wyciągania potrzebnych informacji z dowolnego tekstu opartego na wzorcach. Są również szeroko stosowane do manipulowania tekstami opartymi na wzorcach, co prowadzi do wstępnego przetwarzania tekstu i są bardzo pomocne we wdrażaniu umiejętności cyfrowych, takich jak Przetwarzanie języka naturalnego (NLP) .
W tym artykule pokazano, jak używać wyrażeń regularnych do zastępowania wzorców, podając wiele przykładów, z których każdy stanowi odrębny scenariusz. Bardzo konieczne jest zrozumieniere.sub()>metodare>(wyrażenie regularne) w celu zrozumienia podanych rozwiązań.
There.sub()>Metoda wykonuje globalne wyszukiwanie i globalne zastępowanie podanego ciągu. Służy do zastąpienia określonego wzorca w ciągu znaków. W sumie istnieje 5 argumentów tej funkcji.
Składnia: re.sub(wzór, repl, ciąg, liczba=0, flagi=0)
polecenie „Wszystkie wielkie litery” w programie ExcelParametry:
wzór – wzór, który ma zostać przeszukany i zastąpiony
repl – ciąg znaków, którym ma zostać zastąpiony wzorzec
string – nazwa zmiennej, w której przechowywany jest wzorzec
liczba – liczba znaków, do której zostanie wykonane podstawienie
flagi – służy do modyfikowania znaczenia wzorca wyrażenia regularnego
count>Iflags>są argumentami opcjonalnymi.
Przykład 1: Podstawienie określonego wzorca tekstowego
W tym przykładzie dany wzorzec tekstowy zostanie przeszukany i zastąpiony w ciągu znaków. Chodzi o to, aby użyć bardzo normalnej formyre.sub()>metoda z tylko pierwszymi 3 argumentami.
Poniżej realizacja.
# 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()> |
>
>Wyjście:
It is sunny outside. Thank you so so much.>
Niezależnie od tego, ile razy wymagany wzorzec występuje w ciągu znaków, metoda
re.sub()>funkcja zastępuje je wszystkie podanym wzorcem. Dlatego w powyższym przykładzie oba „bardzo” zostały zastąpione przez „tak”.
Przykład 2: Zastępowanie zestawu znaków określonym znakiem
Zadanie polega na zastąpieniu zestawu znaków danym znakiem. Zestaw znaków oznacza zakres znaków. wre.sub()>W metodzie [ ] (nawiasy kwadratowe) zapisywany jest zestaw znaków.
W tym przykładzie zestaw małych liter, tj. [a-z] zostanie zastąpiony cyfrą 0. Poniżej znajduje się implementacja.
10 do potęgi 6
# 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()> |
>
>Wyjście:
22 A0000 00 0000000000 00 E0000 D00.>
Jeżeli zaistnieje potrzeba podstawienia zarówno zestawu znaków małych, jak i wielkich liter, wówczas zestaw wielkich liter należy wprowadzić w następujący sposób: [a-zA-Z] lub skuteczny można to zrobić za pomocą flag.
Przykład 3: Zastąpienie zestawu znaków określonym znakiem bez uwzględniania wielkości liter
W tym przykładzie zarówno małe, jak i wielkie litery zostaną zastąpione podanym znakiem. Przy użyciu flagi , zadanie to można wykonać bardzo łatwo.
There.I>flaga oznacza re. ZIGNORUJ PRZYPADK . Wprowadzając tę flagę wre.sub()>metodę i podając dowolny zestaw znaków, tj. małe lub duże litery, zadanie można wykonać.
Poniżej realizacja.
# 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()> |
>
>Wyjście:
22 00000 00 0000000000 00 00000 000.>
Przykład 4: Wykonaj podstawienie do określonej liczby znaków
W tym przykładzie podstawienie będzie dotyczyło określonej liczby znaków, a nie całego ciągu. Aby wykonać tego typu podstawienie,re.sub()>metoda ma argumentcount>.
Podając wartość liczbową do tego argumentu, można kontrolować liczbę znaków, na których nastąpi podstawienie. Poniżej realizacja.
Sanjay Dutt i
# 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()> |
>
>Wyjście:
000000 00ur Passion.>
Przykład 5: Podstawienie za pomocą skróconej klasy znaków i wstępne przetwarzanie tekstu
Moduł Regex udostępnia wiele skróconych klas znaków dla tych zestawów znaków, które są bardzo powszechne podczas wstępnego przetwarzania tekstu. Użycie skróconej klasy znaków skutkuje pisaniem wydajnego kodu i zmniejsza potrzebę zapamiętywania zakresu każdego zestawu znaków.
Pete'a Davidsona
Aby uzyskać szczegółowe wyjaśnienie klasy znaków skróconych i sposobu pisania wyrażeń regularnych w Pythonie w celu wstępnego przetwarzania tekstu, kliknij Tutaj . Poniżej znajdują się niektóre z powszechnie używanych klas znaków skróconych:
w: dopasowuje znaki alfanumeryczne
W: dopasowuje znaki inne niż alfanumeryczne, takie jak @, #, ', +,%, –
d: dopasowuje znaki cyfr
s: dopasowuje białe znakiZnaczenie niektórych składni:
dodanie symbolu plus(+) po klasie lub zestawie znaków: powtórzenie poprzedzającej klasy znaków lub zestawu co najmniej 1 lub więcej razy.dodanie symbolu gwiazdki (*) po klasie lub zestawie znaków: powtórzenie poprzedzającej klasy znaków lub zestawu co najmniej 0 lub więcej razy.
dodanie symbolu daszka (^) przed klasą lub zestawem znaków: pasująca pozycja jest określana dla tej klasy znaków lub ustawiana na początku łańcucha.
dodanie symbolu dolara ($) po klasie lub zestawie znaków: pasująca pozycja jest określana dla tej klasy znaków lub ustawiana na końcu łańcucha.
Ten przykład demonstruje użycie wspomnianych skróconych klas znaków do podstawienia i wstępnego przetwarzania tekstu w celu uzyskania czystych i wolnych od błędów ciągów znaków. Poniżej realizacja.
# 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()> |
>
>Wyjście:
Olympic games have been cancelled Dr Vikram Sarabhai was the ISRO first chairman Dr Abdul Kalam the father of India missile programme>