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>