Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 13 odgovora
  • 4.085 pregleda

Najnovija ↓

Problem sa regular expression 22.10.2009. u 18:32 · pre 207 meseci #1
Poštovanje,

imam problem pošto parsujem fajl u želji da smestim metode klase u bazu. Problem je što postoji promenljiva koja se zove $function. Kako da napišem regular expression koji će matchovati reč function, ali ne i $function i ne "function i neće matchovati junction? Molim vas samo proverene varijante, a možete proveriti svoje expressione na stranici http://www.functions-online.com/preg_match.html
Potpis
Ozbiljan i odgovoran mladić
Re: Problem sa regular expression 22.10.2009. u 19:04 · pre 207 meseci #2
Ako se ne varam, ovako ćeš dobiti niz sa imenima svih metoda u nekoj klasi:
Code:
preg_match_all('/function\s([a-z0-9_]+)/i', $text, $matches);
$methods = $matches[1];

E sad ne znam dal' tebi trebaju samo imena, ili možda i cela definicija funckije, parametri, itd.
Re: Problem sa regular expression 22.10.2009. u 19:14 · pre 207 meseci #3
Meni nije problem da izdvojim naziv funkcije, problem mi je jedino expression koji neće okidati na $function ili "function, već samo na function, eventualno space ispred te reči.
Potpis
Ozbiljan i odgovoran mladić
Re: Problem sa regular expression 22.10.2009. u 20:35 · pre 207 meseci #4
A šta ćeš sa public, protected i private klauzulama ispred "function"? :) Mislim da bi ovaj pattern trebao da odradi posao:
/(public\s|protected\s|private\s)?function\s([a-zA-Z0-9_]+)\s*\(.*\)\s*\{.*\}/Us
Re: Problem sa regular expression 22.10.2009. u 21:03 · pre 207 meseci #5
Ne bih da te naljutim, ali rekoh, sme da stoji space ispred function, a posle static, public i private uvek ide space ;) Tačnije, da budem jasan, space je jedini znak koji sme da se pojavi ispred function. Word boundries ne pomaže, pošto i on znak $ tumači kao delimiter između reči, tako da sam zbunjen skroz. Imam varijantu da napišem '/^[\s|\t][public\s|static\s|protected|public static\s|static public\s]?function/', ali mi se ne dopada previše ta varijanta... Hteo sam nešto kompaktnije, ali dobro, poslužiće i ovo.
Potpis
Ozbiljan i odgovoran mladić
Re: Problem sa regular expression 22.10.2009. u 21:22 · pre 207 meseci #6
Citat:
domaci_a_nas: a posle static, public i private uvek ide space ;)

Pa znam, zato sam i stavljao znak "\s" na kraju svake od tih ključnih reči. ;) Ti onda možeš da dodaš još jedan uslov pored ta tri, ovako: public\s|protected\s|private\s|\s.

Sad sam baš testirao ovaj pattern na jednoj klasi, i radi ok.
Re: Problem sa regular expression 22.10.2009. u 21:54 · pre 207 meseci #8
Nikola Poša, testiraj svoj pattern na subjektu $function, matchovaće i taj, a ja to ne želim. kazil, hvala ti puno za ovu funkciju, ali je upisivanje u bazu samo deo zadatka, moram da parsujem file.
Potpis
Ozbiljan i odgovoran mladić
Re: Problem sa regular expression 22.10.2009. u 21:54 · pre 207 meseci #9
ovo bi trebalo da ti matchuje funkcije: /\s+function\s+([a-z_][a-z_0-9]*)\s*\(/i

ali bih ti ja preporucio da koristis ili get_class_methods ili Reflection klase (sa get_declared_classes mozes da uzmes listu svih deklarisanih klasa prilikom izvrsavanja skripte, ako to moze da ti pomogne...)
Potpis
rafforum.rs - Forum Računarskog Fakulteta
Re: Problem sa regular expression 22.10.2009. u 22:01 · pre 207 meseci #10
Šta ako meni u redu piše samo function, onda \s+function ne matchuje. Ako staviš \s?function onda će matchovati $function. Moram da parsujem file, baš moram na taj način da punim bazu, a sem toga, jako me zanima da naučim taj regular expression u ovom konkretnom slučaju. Znači treba mi da jedino slovo koje dolazi ispred reči function bude isključivo space. Word boundaries ne radi.
Potpis
Ozbiljan i odgovoran mladić
Re: Problem sa regular expression 22.10.2009. u 22:07 · pre 207 meseci #11
Pa ne možeš samo po tome da se vodiš, jer onda bi ti možda match-ovao i neki tekst komentara koji unutar sebe ima reč "function", ovako nešto:
Code:
/**
 * Neki tekst komentara i unutar njega rec function. 
 */

A i kako misliš "na subjektu $function"? Ako si mislio na člana klase, probao sam i to, stavo sam promenljivu koja se zove "function", i nju taj pattern nije match-ovao...
Re: Problem sa regular expression 22.10.2009. u 22:16 · pre 207 meseci #12
Tvoj pattern neće matchovati ni reč function ni $function nego samo space i function. Ne zalazim u komentare, u parseru sam to podesio.
Potpis
Ozbiljan i odgovoran mladić
Re: Problem sa regular expression 23.10.2009. u 09:32 · pre 207 meseci #13
A da das ti nama kod na kome testiras (ili ti klasu, sta god ...) ? Evo ja sam sad probao ovaj Nikolin kod i radi sasvim korektno.
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme