Možda dobra ideja upotrebe regularnih izraza

Čisto da podjelim jednu ideju koja mi je pala na pamet :slight_smile: …nemam pojma, možda već postoje izrađeni alati za dohvaćanja ovog tipa koje trebam…a možda je fora idejica.
Recimo imamo listu objekata…i sad ti objekti imaju različite atribute koje im se dodjele…a recimo da nama treba da dohvatimo određeni niz objekata koji sadrže određene atribute. (Objekti su očito sortirani po nekom ključu)
Recimo da nam treba niz svih objekata koji imaju atribut index a da ih slijedi objekt koji ima atribut “ime” ili koji ima atribut “prezime”. Ukoliko se radi o raznovrsnim patternima uzoraka objekata koje trebamo dohvaćati…for petlje za dohvaćanje postaju prilično kompleksne…i krute, jer za nove tipove dohvaćanja…skoro uvijek treba smišljat nove petlje…

Uglavnom, ideja koja mi je pala na pamet…pomoću objekata napravim neki string zapis tipa “dddpwdpmdpw”. Sad mi svako slovo “d” predstavlja objekt s određenim atributom. Kombinacija slova pw ili pm mi predstavlja objekt s nekim zajedničkim atributom “p”, te razlika unutar tih sličnih objekta je preslikana na drugo slovo pw ili pm.

I sad je fora kad imam objekte prezentirane kao string, lako dohvaćam željene uzorke objekata pomoću regularnih izraza. Pomoću dohvaćenog patterna stringa, lako se dohvate odgovarajući objekti iz izvorne liste objekata. :slight_smile:

Znači primjena na konkretnom primjeru:

Recimo da se bavimo analizom rečenica, i sad evo neke rečenice:

“Mali pero voli ivu, anu i katarinu.”

I sad tu rečenicu analizirate i pretvarate u nekakav niz objekata [objekt1, objekt2, objekt3, objekt4…]

…svaki objekt predstavlja riječ unutar rečenice i ima atribute:

objekt=
{
rijec:'pero'
index:5,
vrsta_rijeci:'imenica',
padez:'nominativ'
...
}

sad taj objekt pretvorite po vlastitom ključu u neki string, da taj string zadrži bitna svojstva objekta,npr: “in” što znam da mi znači i=>imenica, n=>nominativ.
Cijela rečnica sad izgleda “pingig,igvig.” (p-pridjev, v-vezni …)
I sad takav zapis omogućava da se sa regularnim izrazima dohvaćaju objekti prema željenim relacijama između objekta.

Tipa, želim sve imenice koje su napisane u nizu: /(i.)+/ , ili želim isključivo sve imenice u genitivu koje su također napisane u nizu. /(ig)+/
Naravno, ovi regularni izrazi bi falili za gornju rečenicu zbog pojavljivanja veznika ili zareza…ali to je upravo bit…pomoću regularnih izraza se lako kontrolira “što ako naiđe zarez…što ako naiđe veznik…itd” …dok recimo da ovo isto dohvaćanje radimo putem nekih for petlji, zapetljancija je žešća, a kombinacije su nebrojene za koje bi morali smišljati nova posebna dohvaćanja.

Ova primjena naravno nije ograničena na analizu rečenica xd, može poslužiti bilo gdje…gdje dohvaćamo objekte u ovisnosti relacija između objekata koje želimo “pretražiti”…dohvatiti.

Vidim otkrio si novu igračku. RegExp. A vidim i velikih problema u tvom razmišljanju. Prva dva kako ćeš znati šta je koja riječ(imenica, pridjev, glagol, itd), a drugi problem je kako ćeš znati u kojem padežu je?

S druge strane ništa me ne spriječava da cijeli taj rečenični niz ne pretvotim u običan JSON objekt i s njim onda radim što me volja. Brže je i jednostavnije od regulra expresiona. Regular Expressionsi su, po riječima mnogo učenijih ljudi od mene, skup sport.

Tako je :). Zapravo, koristio sam se nešto sitno i prije njima, ali mi je bila muka od njihove sintakse…tako da sam se konačno suočio s tim djelom :slight_smile: …i cool su zapravo.

A što se tiče sljedećih problema:

Ovo je nebitno, ja sam samo dao primjer za neku početnu situaciju kako imamo posložene objekte. A kako smo ih tako posložili, tj. kako smo znali tu informaciju o padežu, vrstu riječi…to je drugi par čarapa…odvojen od ove ideje dohvaćanja objekata.
Al kad već spominješ, upravo da bi dešifrirali vrstu riječi i padež, mnogo korisno dođu ovakva selektiranja…jer će padež upravo ovisiti o obliku niza objekata u kojem se riječ nalazi. Tako da se na više razina ova tehnika može koristiti.

Što se tiče JSON-a, ne kužim iskreno kako će ti pomoći kod ovakve problematike…a da se opet ne zatrpaš sa izradom raznih funkcija koje će kruto znati dohvaćati neke izdvojene situacije, “patterne”
…jedino ako postoji već izgrađen neki alat za upravljanje objektima…koji bi morao imati jednako fleksibilnu mogućnost upravljanja atributima objekata, kao što regexp ima mogućnost dohvaćanja patterna stringa.

A to da je skup sport, vjerovatno jeste…ali sve je to relativno o primjeni i alternativama.
A meni se za sad pokazalo da ovo radi 500 puta brže od tehnika koje sam koristio do sad…upravo tih for petlji koje su vjerovatno imale puno i preveć praznog hoda da bi pronašle patterne koje sam trebao. A što se tiče nove fleksibilnosti koju sam dobio, to je pravi BINGO koji me eto motivirao da otvorim temu.