Reguliarioji išraiška (regex) skirta ištraukti reikiamą informaciją iš bet kokio teksto, pagrįsto šablonais. Jie taip pat plačiai naudojami manipuliuojant raštais pagrįstais tekstais, dėl kurių atliekamas išankstinis teksto apdorojimas, ir labai padeda diegti skaitmeninius įgūdžius, pvz. Natūralios kalbos apdorojimas (NLP) .
Šiame straipsnyje parodoma, kaip naudoti reguliarųjį reiškinį šablonams pakeisti, pateikiant kelis pavyzdžius, kur kiekvienas pavyzdys yra unikalus scenarijus. Labai reikia suprastire.sub()>metodasre>(reguliariosios išraiškos) modulis, kad suprastų pateiktus sprendimus.
There.sub()>metodas atlieka visuotinę paiešką ir visuotinį pakeitimą nurodytoje eilutėje. Jis naudojamas pakeisti konkretų raštą eilutėje. Iš viso yra 5 šios funkcijos argumentai.
Sintaksė: re.sub(modelis, repl, eilutė, skaičius = 0, vėliavėlės = 0)
: JavaParametrai:
modelis – šablonas, kurio reikia ieškoti ir pakeisti
repl – eilutė, kuria turi būti pakeistas raštas
eilutė – kintamojo, kuriame saugomas raštas, pavadinimas
count – simbolių skaičius, iki kurio bus atliktas pakeitimas
vėliavėlės – ji naudojama keisti reguliariojo reiškinio šablono reikšmę
count>irflags>yra neprivalomi argumentai.
1 pavyzdys: konkretaus teksto šablono pakeitimas
Šiame pavyzdyje bus ieškoma tam tikro teksto šablono ir jis bus pakeistas eilute. Idėja yra naudoti labai įprastą formąre.sub()>metodas tik su pirmaisiais 3 argumentais.
Žemiau pateikiamas įgyvendinimas.
# 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()> |
>
>Išvestis:
It is sunny outside. Thank you so so much.>
Nesvarbu, kiek kartų reikiamas raštas yra eilutėje,
re.sub()>funkcija pakeičia juos visus nurodytu šablonu. Štai kodėl aukščiau pateiktame pavyzdyje abu žodžiai „labai“ yra pakeisti „taip“.
2 pavyzdys: simbolių rinkinio pakeitimas konkrečiu simboliu
Užduotis yra pakeisti simbolių rinkinį tam tikru simboliu. Simbolių rinkinys reiškia simbolių diapazoną. Vidujere.sub()>metodas simbolių rinkinys įrašomas viduje [ ](laužtiniuose skliaustuose).
Šiame pavyzdyje mažųjų raidžių rinkinys, t. y. [a-z], bus pakeistas skaitmeniu 0. Toliau pateikiamas įgyvendinimas.
kada buvo išrasta mokykla
# 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()> |
>
>Išvestis:
22 A0000 00 0000000000 00 E0000 D00.>
Jei reikia pakeisti tiek mažųjų, tiek didžiųjų raidžių rinkinį, didžiųjų raidžių rinkinį turime įvesti tokiu būdu: [a-zA-Z] arba efektyvus būdas yra naudoti vėliavėles.
3 pavyzdys: didžiųjų ir mažųjų raidžių neskiriamas simbolių rinkinio pakeitimas konkrečiu simboliu
Šiame pavyzdyje tiek mažosios, tiek didžiosios raidės bus pakeistos nurodytu simboliu. Naudojant vėliavos , šią užduotį galima atlikti labai lengvai.
There.I>vėliava reiškia re. Ignoruoti . Įvesdami šią vėliavą įre.sub()>metodą ir paminėjus bet kurį vieną simbolių rinkinį, t. y. mažosiomis arba didžiosiomis raidėmis, užduotis gali būti atlikta.
Žemiau pateikiamas įgyvendinimas.
# 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()> |
>
>
susietas sąrašas javaIšvestis:
22 00000 00 0000000000 00 00000 000.>
4 pavyzdys: pakeiskite iki tam tikro simbolių skaičiaus
Šiame pavyzdyje pakeitimas bus iki tam tikro simbolių skaičiaus, o ne visoje eilutėje. Norėdami atlikti tokio tipo pakeitimą,re.sub()>metodas turi argumentącount>.
Pateikus šio argumento skaitinę reikšmę, galima valdyti simbolių, kuriais bus pakeistas, skaičių. Žemiau pateikiamas įgyvendinimas.
# 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()> |
>
>Išvestis:
000000 00ur Passion.>
5 pavyzdys: pakeitimas naudojant trumpųjų simbolių klasę ir išankstinis teksto apdorojimas
Regex modulis suteikia daug trumpųjų simbolių klasių tiems simbolių rinkiniams, kurie yra labai dažni išankstinio teksto apdorojimo metu. Naudojant stenografinę simbolių klasę, rašomas efektyvus kodas ir sumažėja poreikis atsiminti kiekvieno simbolių rinkinio diapazoną.
java eilutė su formatu
Norėdami gauti išsamų paaiškinimą apie trumpųjų simbolių klasę ir kaip parašyti reguliariąją išraišką python, kad būtų galima apdoroti tekstą, spustelėkite čia . Toliau pateikiamos kelios dažniausiai naudojamos trumpųjų simbolių klasės:
w: atitinka raidinius ir skaitinius simbolius
W: atitinka ne raidinius skaitinius simbolius, pvz., @, #, ‘, +, %, –
d: atitinka skaitmenis
s: atitinka tarpo simboliusKai kurios sintaksės reikšmė:
pliuso (+) simbolio pridėjimas po simbolių klasės ar rinkinio: ankstesnės simbolių klasės arba rinkinio kartojimas bent 1 ar daugiau kartų.Žvaigždutės (*) simbolio pridėjimas po simbolių klasės ar rinkinio: ankstesnės simbolių klasės arba rinkinio kartojimas bent 0 ar daugiau kartų.
simbolio caret(^) pridėjimas prieš simbolių klasę arba rinkinį: atitinkama padėtis nustatoma tai simbolių klasei arba rinkiniui eilutės pradžioje.
dolerio ($) simbolio pridėjimas po simbolių klasės ar rinkinio: atitinkama padėtis nustatoma tai simbolių klasei arba rinkiniui eilutės pabaigoje.
Šiame pavyzdyje parodytas minėtų trumpųjų simbolių klasių naudojimas teksto pakeitimui ir išankstiniam apdorojimui, siekiant gauti švarias ir be klaidų eilutes. Žemiau pateikiamas įgyvendinimas.
# 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()> |
>
>Išvestis:
Olympic games have been cancelled Dr Vikram Sarabhai was the ISRO first chairman Dr Abdul Kalam the father of India missile programme>