PC Ekspert Forum

PC Ekspert Forum (https://forum.pcekspert.com/index.php)
-   Web dizajn, programiranje i ostalo (https://forum.pcekspert.com/forumdisplay.php?f=39)
-   -   C#/C++/PHP, regex, string u objekt (https://forum.pcekspert.com/showthread.php?t=275324)

OuttaControl 26.12.2015. 17:14

C#/C++/PHP, regex, string u objekt
 
Pozdrav,
Prvo jezik nije bitan, u svima je jednostavno lako to napravit
Dakle imam teksutalni file sa puno redova i puno knjiga u njemu, format ide ovako, i uglavnom cijeli file prati taj format:
Code:

Ormar 1
Težak Stjepko, Babić Stjepan :  ”Gramatika hrvatskoga jezika - priručnik za osnovno jezično obrazovanje” , Školska knjiga, Zagreb, 1992.
Vončina Josip : “Jezična baština”, Književni  krug, Split, 1988.
.
.
.
Ormar 2
Kvesić: “ Uvod u Peru K”, Zagreb, 1975.
Remarque: “Noć u Lisabonu”, 1966.
“Suvremena hrvatska novela 1 ”, Zora, Zagreb, 1971.
“Suvremena hrvatska novela 2 ”
Vojnović: “Dubrovačka trilogija”
Puškin: “Kapetanova kći”

Imam super izraz ako bi sve pratilo strukturu
Code:

([^,].*)\”(.*)\”\,([^,]*)\,([^,]*)\,([^,][[:digit:]]*).$
E sad di je problem, kao sto na primjerima u Ormaru 2, knjige(neke) prestaju pratiti standardnu strukturu, amo reć da nema ništa iza naslova, super samo napravim konstruktor sa "nepoznato" ili tako nešto, ali je problem šta neke kao "Kvesić: “ Uvod u Peru K”, Zagreb, 1975." imaju, na mjestu di je izdavač ime grada

dakle za dohvatit ime autora nema problema vise manje:
Code:

^.*:
(ako ih je više podjeljeno zarezom, isto mogu iskombinirat, nije veliki problem)
Za dohvatiti naslov laganini
Code:

\”.*\”
Za dohvatit izdavača i grad
Code:

\”\,.*\,
i onda to kasnije podjelim na dva, mozda može lakše al nije toliki problem
Za dohvatit godinu
Code:

[[:digit:]]+.$

rodney 27.12.2015. 20:40

http://ex-parrot.com/~pdw/Mail-RFC822-Address.html
Lol
A sad što je točno problem?
Ako se može dogoditi da fali ili grad ili izdavač, teško ćeš rješit,
ako znaš da je onaj koji nedostaje izdavač nema problema.
S druge strane, ako se snalaziš u više programskih jezika, zašto pobogu išta pokušavaš napravit sa tim jednostavnim super preglednim i jasnim regularnim izrazom?

OuttaControl 28.12.2015. 20:46

Odlučio sam to rješit manualno, iako mogu uspoređivat sa listom imena gradova, al nema smisla, pošto možda 50tak unosa ima takav oblik, pa ih se može i ručno bez velikog problema

A nezz, meni su nekako dragi regularni izrazi :D, i lako ga prebacim u bilokoji drugi jezik jer svi u stdlib imaju regex funkciju. Al nije problem ni napisat nesto sa separatorima.

Ali sam primjetio jos jedan problem, ukoliko knjiga ispod ima slicno ime i istog izdavača:
“Suvremena hrvatska novela 1 ”, Zora, Zagreb, 1971.
“Suvremena hrvatska novela 2 ”
A ne piše na drugom primjerku, trebao bih provjeriti koliko je jedan string sličan drugom stringu, našao sam neki "Levenshtein Distance","Bitap"... algoritam, al oni nisu default ni u .NET ni u PHP, pa ako postoji koja metodica u nekom jeziku koja mi može vratit numeričku vrijednost sličnosti, bilo bi super :)

Još radim na istraživanju pa ću jedan dan-dva kad uvatim vrimena sve to istipkat

rodney 28.12.2015. 23:23

Pa #net i php nisu baš prvi izbor za takve stvari. Ja bih osobno išao na pythoon za takve stvari što se tiče broja biblioteka i slično. Python nltk ima obe te metrike i još trilijun toga, i općenito je puno jednostavniji za rad sa stringom i tekstom nego c/java etc..

OuttaControl 29.12.2015. 03:59

A bas u pythonu nisam nikad radio :/, a s obzirom da kasnije moram migrirat podatke u sql i napravit koliko toliko pristupačnu aplikaciju, draze mi je radit u nekom jeziku kojeg znam, iako pretpostavljam da su principi pythona slični c-u, al nema veze usporedjivat cu char po char, old skul :D hvalq na savjetima :)

rodney 29.12.2015. 09:08

Sto se tice pythona i mysql-a tu isto nema problema, ali razumijem da radije ideš na poznato. Nebih rekao da je sličan c-u jer je skriptni jezik, puno jednostavniji od c-a, meni je trebalo tjedan dva da postanem produktivan u pythonu s c like podlogom.


Sva vremena su GMT +2. Sada je 08:30.

Powered by vBulletin®
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 1999-2024 PC Ekspert - Sva prava pridržana ISSN 1334-2940
Ad Management by RedTyger