Regulárny výraz (regulárny výraz) je určený na vytiahnutie požadovaných informácií z akéhokoľvek textu, ktorý je založený na vzoroch. Sú tiež široko používané na manipuláciu s textami založenými na vzoroch, čo vedie k predbežnému spracovaniu textu a sú veľmi užitočné pri implementácii digitálnych zručností, ako je napr. Spracovanie prirodzeného jazyka (NLP) .
Tento článok ukazuje, ako použiť regulárny výraz na nahradenie vzorov poskytnutím viacerých príkladov, kde každý príklad je jedinečným vlastným scenárom. Je veľmi potrebné pochopiťre.sub()>spôsobre>(regulárny výraz) modul na pochopenie daných riešení.
There.sub()>metóda vykoná globálne vyhľadávanie a globálne nahradenie daného reťazca. Používa sa na nahradenie špecifického vzoru v reťazci. Celkovo existuje 5 argumentov tejto funkcie.
Syntax: re.sub(vzor, repl, reťazec, počet=0, príznaky=0)
ascii v jazyku javaParametre:
vzor – vzor, ktorý sa má vyhľadať a nahradiť
repl – reťazec, ktorým sa má vzor nahradiť
string – názov premennej, v ktorej je vzor uložený
počet – počet znakov, do ktorých sa vykoná suplovanie
flags – používa sa na úpravu významu vzoru regulárneho výrazu
count>aflags>sú voliteľné argumenty.
Príklad 1: Nahradenie špecifického textového vzoru
V tomto príklade sa daný textový vzor vyhľadá a nahradí v reťazci. Cieľom je použiť veľmi normálnu formure.sub()>metóda len s prvými 3 argumentmi.
Nižšie je uvedená implementácia.
# 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ýkon:
It is sunny outside. Thank you so so much.>
Bez ohľadu na to, koľkokrát je požadovaný vzor v reťazci prítomný,
re.sub()>funkcia ich všetky nahradí daným vzorom. To je dôvod, prečo sú obe „veľmi“ nahradené „tak“ vo vyššie uvedenom príklade.
Príklad 2: Nahradenie znakovej sady špecifickým znakom
Úlohou je nahradiť znakovú sadu daným znakom. Znaková sada znamená rozsah znakov. Vre.sub()>metóda sa znaková sada zapíše do [ ] (hranaté zátvorky).
V tomto príklade bude sada malých písmen, t. j. [a-z] nahradená číslicou 0. Nižšie je uvedená implementácia.
zoznam na 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ýkon:
22 A0000 00 0000000000 00 E0000 D00.>
Ak je potrebné nahradiť sadu malých aj veľkých písmen, musíme zaviesť sadu veľkých písmen týmto spôsobom: [a-zA-Z] alebo efektívne spôsob, ako to urobiť, je pomocou vlajok.
Príklad 3: Nahradenie sady znakov špecifickým znakom bez rozlišovania malých a veľkých písmen
V tomto príklade budú malé aj veľké písmená nahradené daným znakom. S použitím vlajky , túto úlohu možno vykonať veľmi jednoducho.
There.I>vlajka znamená re. IGNORECASE . Zavedením tejto vlajky vre.sub()>metódu a uvedenie ľubovoľnej jednej znakovej sady, tj malých alebo veľkých písmen, úlohu možno dokončiť.
Nižšie je uvedená implementácia.
# 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ýkon:
22 00000 00 0000000000 00 00000 000.>
Príklad 4: Vykonajte nahradenie až do určitého počtu znakov
V tomto príklade bude náhrada až do určitého počtu znakov a nie na celý reťazec. Na vykonanie tohto typu substitúciere.sub()>metóda má argumentcount>.
Poskytnutím číselnej hodnoty tomuto argumentu je možné kontrolovať počet znakov, na ktorých sa vykoná nahradenie. Nižšie je uvedená implementácia.
java arraylist zoradený
# 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()> |
>
>Výkon:
000000 00ur Passion.>
Príklad 5: Substitúcia pomocou triedy skratiek a predspracovanie textu
Modul Regex poskytuje mnoho tried skrátených znakov pre tie znakové sady, ktoré sú veľmi bežné počas predbežného spracovania textu. Použitie skrátenej triedy znakov má za následok písanie efektívneho kódu a znižuje potrebu pamätať si rozsah každej znakovej sady.
string.format java string
Ak chcete získať podrobné vysvetlenie triedy znakov skratky a ako napísať regulárny výraz v pythone na predbežné spracovanie textu, kliknite tu . Nasledujú niektoré z bežne používaných tried skrátených znakov:
w: zhoduje sa s alfanumerickými znakmi
W: zodpovedá iným ako alfanumerickým znakom ako @, #, ‘, +, %, –
d: zhoduje sa s číslicami
s: zodpovedá medzerámVýznam nejakej syntaxe:
pridanie symbolu plus(+) za triedu alebo sadu znakov: opakovanie predchádzajúcej triedy alebo sady znakov aspoň 1-krát alebo viackrát.pridanie symbolu hviezdičky (*) za triedu znakov alebo sadu znakov: opakovanie predchádzajúcej triedy alebo sady znakov aspoň 0 alebo viackrát.
pridanie symbolu striešky (^) pred triedu znakov alebo sadu znakov: pozícia zhody je určená pre túto triedu znakov alebo sadu na začiatku reťazca.
pridanie symbolu dolára ($) za triedu alebo sadu znakov: pozícia zhody je určená pre túto triedu znakov alebo sadu na konci reťazca.
Tento príklad demonštruje použitie uvedených tried skrátených znakov na nahradenie a predbežné spracovanie textu na získanie čistých a bezchybných reťazcov. Nižšie je uvedená implementácia.
# 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ýkon:
Olympic games have been cancelled Dr Vikram Sarabhai was the ISRO first chairman Dr Abdul Kalam the father of India missile programme>