Regular Expression (regex) är avsett för att dra ut den nödvändiga informationen från all text som är baserad på mönster. De används också i stor utsträckning för att manipulera de mönsterbaserade texterna vilket leder till textförbearbetning och är till stor hjälp för att implementera digitala färdigheter som Natural Language Processing (NLP) .
Den här artikeln visar hur man använder regex för att ersätta mönster genom att tillhandahålla flera exempel där varje exempel är ett unikt scenario i sig. Det är mycket nödvändigt att förståre.sub()>
metod avre>
(reguljära uttryck) modul för att förstå de givna lösningarna.
Dere.sub()>
metod utför global sökning och global ersättning på den givna strängen. Den används för att ersätta ett specifikt mönster i strängen. Det finns totalt 5 argument för denna funktion.
Syntax: re.sub(pattern, repl, string, count=0, flags=0)
för loop in bashParametrar:
mönster – mönstret som ska sökas och ersättas
repl – strängen som mönstret ska ersättas med
string – namnet på variabeln där mönstret är lagrat
count – antalet tecken upp till vilket substitution kommer att utföras
flaggor – det används för att ändra innebörden av regexmönstret
count>
ochflags>
är valfria argument.
Exempel 1: Ersättning av ett specifikt textmönster
I det här exemplet kommer ett givet textmönster att sökas igenom och ersättas i en sträng. Tanken är att använda den mycket normala formen avre.sub()>
metod med endast de tre första argumenten.
Nedan följer genomförandet.
# 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()> |
>
>Produktion:
It is sunny outside. Thank you so so much.>
Oavsett hur många gånger det erforderliga mönstret finns i strängen,
re.sub()>
funktion ersätter alla med det givna mönstret. Det är därför båda 'mycket' ersätts med 'så' i exemplet ovan.
Exempel 2: Ersätter en teckenuppsättning med ett specifikt tecken
Uppgiften är att ersätta en teckenuppsättning med ett givet tecken. En teckenuppsättning betyder ett antal tecken. I denre.sub()>
metod en teckenuppsättning skrivs inom [ ](hakparenteser).
I det här exemplet kommer teckenuppsättningen med små bokstäver, dvs. [a-z] att ersättas med siffran 0. Nedan visas implementeringen.
greibach normal form
# 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()> |
>
>Produktion:
22 A0000 00 0000000000 00 E0000 D00.>
Om det finns ett behov av att ersätta både gemener och versaler måste vi introducera versaler på detta sätt: [a-zA-Z] eller effektiv sättet att göra är att använda flaggor.
Exempel 3: Skiftlägesokänslig ersättning av en teckenuppsättning med ett specifikt tecken
I det här exemplet kommer både gemener och versaler att ersättas av det givna tecknet. Med användning av flaggor , denna uppgift kan utföras mycket enkelt.
Dere.I>
flaggan står för re. IGNORERA FALL . Genom att introducera denna flagga ire.sub()>
metod och nämner vilken som helst teckenuppsättning, dvs. gemener eller versaler, kan uppgiften slutföras.
Nedan följer genomförandet.
# 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()> |
>
>
char till int javaProduktion:
22 00000 00 0000000000 00 00000 000.>
Exempel 4: Utför substitution upp till ett visst antal tecken
I det här exemplet kommer substitutionen vara upp till ett visst antal tecken och inte på hela strängen. För att utföra denna typ av substitutionre.sub()>
metoden har ett argumentcount>
.
Genom att tillhandahålla ett numeriskt värde till detta argument kan antalet tecken som substitution kommer att ske kontrolleras. Nedan följer genomförandet.
# 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()> |
>
>Produktion:
000000 00ur Passion.>
Exempel 5: Substitution med stenografisk karaktärsklass och förbearbetning av text
Regex-modulen tillhandahåller många stenografiklasser för de teckenuppsättningar som är mycket vanliga under förbehandling av text. Användning av stenografisk teckenklass resulterar i att du skriver effektiv kod och minskar behovet av att komma ihåg intervallet för varje teckenuppsättning.
logotyp java
För att få en detaljerad förklaring av stenografi teckenklass och hur man skriver reguljära uttryck i python för förbearbetning av text klicka här . Följande är några av de vanligaste stenografiklasserna:
w: matchar alfanumeriska tecken
W: matchar icke-alfanumeriska tecken som @, #, ‘, +, %, –
d: matchar siffror
s: matchar blankteckenBetydelse av viss syntax:
lägga till en plus(+)-symbol efter en teckenklass eller uppsättning: upprepning av föregående teckenklass eller uppsättning minst 1 eller flera gånger.lägga till en asterisk(*)-symbol efter en teckenklass eller uppsättning: upprepning av föregående teckenklass eller uppsättning minst 0 gånger eller fler.
lägga till en fältsymbol (^) före en teckenklass eller uppsättning: matchande position bestäms för den teckenklassen eller uppsättningen i början av strängen.
lägga till en dollar($)-symbol efter en teckenklass eller uppsättning: matchande position bestäms för den teckenklassen eller uppsättningen i slutet av strängen.
Det här exemplet visar användningen av nämnda stenografiska teckenklasser för ersättning och förbearbetning av text för att få rena och felfria strängar. Nedan följer genomförandet.
# 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()> |
>
>Produktion:
Olympic games have been cancelled Dr Vikram Sarabhai was the ISRO first chairman Dr Abdul Kalam the father of India missile programme>