Regulární výraz (regulární výraz) je určen k vytažení požadovaných informací z jakéhokoli textu, který je založen na vzorech. Jsou také široce používány pro manipulaci s texty založenými na vzorech, což vede k předběžnému zpracování textu a jsou velmi užitečné při implementaci digitálních dovedností, jako je Zpracování přirozeného jazyka (NLP) .
Tento článek ukazuje, jak použít regulární výraz k nahrazení vzorů poskytnutím více příkladů, kde každý příklad je jedinečný scénář sám o sobě. Je velmi nutné pochopitre.sub()>
metodare>
(regulární výraz) modul k pochopení daných řešení.
There.sub()>
metoda provádí globální vyhledávání a globální nahrazení na daném řetězci. Používá se pro nahrazení určitého vzoru v řetězci. Tato funkce má celkem 5 argumentů.
Syntax: re.sub(vzor, repl, řetězec, počet=0, příznaky=0)
základy sestavení ubuntuParametry:
vzor – vzor, který má být vyhledán a nahrazen
repl – řetězec, kterým má být vzor nahrazen
string – název proměnné, ve které je vzor uložen
počet – počet znaků, do kterých bude provedena záměna
příznaky – používá se k úpravě významu vzoru regulárních výrazů
count>
aflags>
jsou volitelné argumenty.
Příklad 1: Nahrazení určitého textového vzoru
V tomto příkladu bude daný textový vzor prohledán a nahrazen v řetězci. Cílem je použít velmi normální formure.sub()>
metoda pouze s prvními 3 argumenty.
Níže je implementace.
# 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()> |
>
>Výstup:
It is sunny outside. Thank you so so much.>
Bez ohledu na to, kolikrát je požadovaný vzor v řetězci přítomen,
re.sub()>
funkce je všechny nahradí daným vzorem. To je důvod, proč je ve výše uvedeném příkladu obě slova „velmi“ nahrazena slovy „tak“.
Příklad 2: Nahrazení znakové sady určitým znakem
Úkolem je nahradit znakovou sadu daným znakem. Znaková sada znamená rozsah znaků. Vre.sub()>
metoda se znaková sada zapíše do [ ] (hranaté závorky).
V tomto příkladu bude sada malých písmen, tj. [a-z] nahrazena číslicí 0. Níže je uvedena implementace.
návrhové vzory v jazyce Java
# 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()> |
>
>Výstup:
22 A0000 00 0000000000 00 E0000 D00.>
Pokud je potřeba nahradit sadu malých i velkých písmen, musíme sadu velkých písmen zavést takto: [a-zA-Z] nebo efektivní způsob, jak to udělat, je pomocí vlajek.
Příklad 3: Náhrada znakové sady specifickým znakem bez ohledu na malá a velká písmena
V tomto příkladu budou malá i velká písmena nahrazena daným znakem. S použitím vlajky , lze tento úkol provést velmi snadno.
There.I>
vlajka znamená re. IGNOROVAT PŘÍPAD . Zavedením této vlajky vre.sub()>
metodu a uvedení libovolné jedné znakové sady, tj. malých nebo velkých písmen, úkol lze dokončit.
Níže je implementace.
# 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()> |
>
>Výstup:
22 00000 00 0000000000 00 00000 000.>
Příklad 4: Proveďte nahrazování až do určitého počtu znaků
V tomto příkladu bude nahrazení až do určitého počtu znaků a nikoli na celý řetězec. K provedení tohoto typu substitucere.sub()>
metoda má argumentcount>
.
Zadáním číselné hodnoty tomuto argumentu lze řídit počet znaků, na kterých dojde k nahrazení. Níže je implementace.
# 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()> |
ex uživatelského jména
>
>Výstup:
000000 00ur Passion.>
Příklad 5: Náhrada pomocí zkrácené třídy znaků a předzpracování textu
Modul Regex poskytuje mnoho tříd zkrácených znaků pro ty znakové sady, které jsou velmi běžné při předzpracování textu. Použití zkrácené třídy znaků vede k psaní efektivního kódu a snižuje potřebu pamatovat si rozsah každé znakové sady.
java pokud jinak
Chcete-li získat podrobné vysvětlení třídy zkrácených znaků a jak napsat regulární výraz v pythonu pro předběžné zpracování textu, klikněte tady . Níže jsou uvedeny některé z běžně používaných tříd zkrácených znaků:
w: odpovídá alfanumerickým znakům
W: odpovídá nealfanumerickým znakům jako @, #, ‘, +, %, –
d: odpovídá číselným znakům
s: odpovídá mezerámVýznam nějaké syntaxe:
přidání symbolu plus(+) za třídu znaků nebo sadu znaků: opakování předchozí třídy nebo sady znaků alespoň jednou nebo vícekrát.přidání symbolu hvězdičky (*) za třídu znaků nebo sadu znaků: opakování předchozí třídy nebo sady znaků alespoň 0 nebo vícekrát.
přidání symbolu stříšky (^) před třídu znaků nebo sadu znaků: odpovídající pozice je určena pro danou třídu znaků nebo sadu na začátku řetězce.
přidání symbolu dolaru ($) za třídu znaků nebo sadu znaků: odpovídající pozice je určena pro danou třídu znaků nebo sadu na konci řetězce.
Tento příklad demonstruje použití zmíněných tříd zkrácených znaků pro nahrazení a předběžné zpracování textu za účelem získání čistých a bezchybných řetězců. Níže je implementace.
# 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()> |
>
>Výstup:
Olympic games have been cancelled Dr Vikram Sarabhai was the ISRO first chairman Dr Abdul Kalam the father of India missile programme>