REGEX pamoka - Kaip naudoti BACKREFERENCE
Ši pamoka skirta tiems kurie yra jau šiek tiek susipažinęs
su REGEX. Nurodytu kodo pavyzdžius yra Javascript kalboje. Kas tai BACKREFERENCES ( toliau backrefs )?
Kai REGEX išraiška randa atitinkančiu simbolius jis saugoja
jų į specialius kintamasis vadinami BACKREFERENCES. Jie yra vardinami su doleriu
simboli ir skaičius pvz. $1, $2 , $3 ir t.t.
Kaip ir kada jų naudoti? Tarkim jus norite pridėti „-ta“
prie kiekviena skaičius eilutėje. Taigi jei eilute turini yra „šiandien 18
diena“ norėtum kad jis butu paversta į „šiandien 18-ta diena“
var test = “šiandien 18 diena”;
test = test.replace(/([0-9]+)/g,”$1-ta “);
alert( test );
Kaip matote vietoj $1 buvo įrašyta “18“
Dabar žiūrėsim į sudėtingesnį užduoti – trakim turime šis
eilute:
„šiandien 18 diena mes 3 valgome 12 pyragus“
mes norėtum paversti tik skaičius po kuri yra tarpas
ir raide „d“
„šiandien 18-ta diena mes 3 valgome 12 pyragus“
ankstesni sprendimą neveiks nes jis paverčia visus skaičius:
„šiandien 18-ta diena mes 3-ta valgome 12-ta pyragus“
Štai užduočių sprendimą:
var test = “šiandien 18 diena mes 3 valgome 12 pyragus”;
test = test.replace(/([0-9]+)\sd/g,”$1-ta d”);
alert( test );
rezultatą: „šiandien 18-ta diena mes 3 valgome 12 pyragus“
Jei reikia sudėtingesniu operacijos atlikt atitinkančioms
simboliams tada galima naudoti „function“ galimybe – kai naudojam „function“
jame bus viena parametrą kuriame bus saugota atitinkančių simboliu
var test = “šiandien 18 diena mes 3 valgome 12 pyragus”;
test = test.replace(
/([0-9]+\s[a-zA-Z])/g,
function(m){
if(m.substr(m.length-1,1)==”d”){
return(m.substr(0,m.length-2) + “-ta d”)
}
else
if(m.substr(m.length-1,1)==”v”){
return(m.substr(0,m.length-2) + “-se v”)
}
else{
return(m)
}
});
alert( test );
rezultatą: „šiandien 18-ta diena mes 3-se valgome 12 pyragus“
Rodyk draugams