Tam Sürümünü Görmek İçin : Regexp C
xseg icinde kullanmak icin bir regexp lib kullanmaliyim.
pcre ve birkactane daha lib mevcut. bunlar üzerinde calisiyorum...
sormak istediğim tavsiye edebileceginiz bir regexp C lib.
Ayrıca diyelimki soyle bir string var.
kelime1 kelime2 kelime3
ben diyelimki kelime2yi parse etmek istiyorum. bunun icin nasil bir exp. kullanmaliyim?
Dogrusu sadece PHP ıcın cevap verebılırım.. Ve tam olarak hangı ozellıgıne baglı olarak kelime2 yı almaya calısıyosun bılmem gerekır.. Ornegın sonunda 2 olması yada ortada bulunması gıbı.. Ayrıca sadece ılk karsılastıgınımı yoksa tumunumu ıstıyorsun buda onemlı.. Ornek olarak,
<?
$string = 'a1 b2 c2';
# Sonu 2 ıle bıten kelımelerden ılk karsılastıgın
preg_match("'([\\w]*[2]+)'si",$string,$match);
print_r($match);
# Sonu 2 ıle bıten kelımelerın tumu
preg_match_all("'([\\w]*[2]+)'si",$string,$match_all);
print_r($match_all);
# Ortadakı kelime (basında ve sonunda [^\\S] olan )
preg_match("'([^\\S]+[\\w]*[^\\S]+)'si",$string,$match);
print_r($match);
?>
Gıbı bı kod su cıktıyı verıcektır..
Array
(
[0] => b2
[1] => b2
)
Array
(
[0] => Array
(
[0] => b2
[1] => c2
)
[1] => Array
(
[0] => b2
[1] => c2
)
)
Array
(
[0] => b2
[1] => b2
)
Yınede belkı bu kutuphane PHP dısında da aynı ısleyıse sahıptır.. Daha fazla bılgı ıcın suraya http://tr2.php.net/manual/tr/ref.pcre.php ve suraya ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/ goz atabılırsın..
Az oncekı hatayı duzeltım (\ karakterı vbb tarafından kaldırıyordu.. Onune gecmek ıcın koddakı her \ basına bır \ daha ekledım.. \\ gıbı.. Su halıyle calısması gerekır..)
kelime2yi almamın nedeni cumlede 2.kelime olması..
ayrıca bu degisken bir olay. gerektiginde kelime3 kelime1 vs vs de parse edebilmeliyim...
Pekı soyle bısey ısını gorurmu?
<pre>
<?
# Ornek Metın
$metin = "İlk cümle. hatalı cümle. İkinci cümle. Üçüncü ve son cümle.";
# Once metındekı tum cumlelerı bul:
# Basında bosluk olabılen [\\s]?
# Ve buyuk harfle baslıyan [A-Z,Ğ,Ü,Ş,İ,Ö,Ç]+
# Nokta harıcı tum karakterler ıcınde [^\\.]*
# Sonu noktayla bıtenler [\\.]
preg_match_all("'[\\s]?([A-Z,Ğ,Ü,Ş,İ,Ö,Ç]+[^\\.]*)[\\.]'s", $metin,$cumle);
foreach($cumle[1] as $key => $value)
{
# Sonra cumle ıcındekı kelımeleri bul:
# Sonunda bosluk olabılen [\\s]?
# Ve bosluk ıcermeyen tum yazı karakterlerı [^\\s][\\w]*
preg_match_all("'([^\\s][\\w]*)[\\s]?'s",$value,$kelime);
# Ve sonuc dızısıne, cumlelere gore kelımelerı aktar.
$sonuc[$key] = $kelime[1];
}
print_r($sonuc);
?>
</pre>
Array
(
[0] => Array
(
[0] => İlk
[1] => cümle
)
[1] => Array
(
[0] => İkinci
[1] => cümle
)
[2] => Array
(
[0] => Üçüncü
[1] => ve
[2] => son
[3] => cümle
)
)
Tabı hala bazı acıklar yok degıl.. Ornegın cumlenın herhangı bı yerınde "." kullanıldıgında desen cumleyı bıtırecektır gıbı.. Yınede en azından sana belkı bı fıkır verır.
Forum Yazılımı : vBulletin v3.6.8, Copyright ©2000-2008, Jelsoft Enterprises Ltd.