Jump to content
Forumu Destekleyenlere Katılın ×
Paticik Forumları
2000 lerden beri faal olan, çok şukela bir paylaşım platformuyuz. Hoşgeldiniz.

Regex deseni yardım..


Pluton

Öne çıkan mesajlar

Bi regex deseni yapmaya çalışıyorum ama olmuyor bir türlü.

Pluton;478544 said:
yazılar

ben burda sadece "yazılar" bölümünü alıp diğerlerini es geçmesini istiyorum ama deseni çıkaramadım bir türlü yardımcı olursanız çok sevinirim. Tşk ederim şimdiden
Link to comment
Sosyal ağlarda paylaş

Şöyle bir şeyin işini görmesi lazım:


[a-zA-Z wrote: *;[0-9]*]([a-zA-Z]*)


Kullandığın dile göre bazı yerlere ek eklemen gerekebilir. Köşeli parantezlerdeki grupları da isteğine göre değiştirirsin.

İstediğin string 1. grupta capture ediliyor.

http://www.fileformat.info/tool/regex.htm burda test ettim, çalışıyor.
Link to comment
Sosyal ağlarda paylaş

Regex öğrenmeye çalışıyorum da küçük bi proje buldum kendimce öğrene öğrene geliştiriyorum. Yapmak istediğim olay şu..

Mesela forumda konuları listelerken şöyle şeyler var.



şimdi böyle bir kodda şöyle çekiyorum.

$al = '|(.*?)|';

Şimdi işin kötü tarafı bazı linklerde id="" belirtmemişler. Şimdi benim yapmak istediğim olay şu...



Burada .* yerine ne koymalıyım ki "olsun yada olmasın sen yinede çek" diyebileyim buna =) Yardımlarınız için teşekkür ederim şimdiden
* işareti doğru, yani 0 ya da daha fazla.
+ işareti 1 ya da daha fazla.
? ise 0 ya da 1 kere.

Sorun ise blabla[0-9]* dediğinde * işaretinin sadece [0-9] için geçerli olması. blabla[0-9]* için geçerli olsun dersen bir şekilde gruplaman lazım. Nasıl olduğunu tam hatırlamıyorum ama normal parantezle yapılıyor diye tahmin ediyorum. (blabla[0-9]*)? mesela.

Edit: ? daha uygun olacaktır muhtemelen. ID'nin bir kereden fazla girilmesini istemiyorsundur diye tahmin ediyorum. Yani ID ya olacak ya olmayacak.
Link to comment
Sosyal ağlarda paylaş

Mirage said:
* işareti doğru, yani 0 ya da daha fazla.
+ işareti 1 ya da daha fazla.
? ise 0 ya da 1 kere.

Sorun ise blabla[0-9]* dediğinde * işaretinin sadece [0-9] için geçerli olması. blabla[0-9]* için geçerli olsun dersen bir şekilde gruplaman lazım. Nasıl olduğunu tam hatırlamıyorum ama normal parantezle yapılıyor diye tahmin ediyorum. (blabla[0-9]*)? mesela.

Edit: ? daha uygun olacaktır muhtemelen. ID'nin bir kereden fazla girilmesini istemiyorsundur diye tahmin ediyorum. Yani ID ya olacak ya olmayacak.


tam olarak anlatamamışım =) şimdi durum şöyle

vBulletin bir forumdan kategorideki konu başlıklarını almaya çalışıyorum.

Ama bazıları okunmuş bazıları okunmamış oluyor.

Okunmuş: resimli description

Okunmamış: resimli description

İşte sorun burdaki style="font-weight:bold" zımbırtısı. Bunun burda olup yada olmaması önemli değil. Olsada çekmesini olmasada çekmesini istiyorum ama bir türlü başaramadım.

Ya okunmuş konuları çekebiliyorum yada okunmamış =) Ben iksini birden çekmek istiyorum.
Link to comment
Sosyal ağlarda paylaş

Ben bu tarz ucu açık HTML parsing işlemlerini yaparken kodun herhangi bir yerini mihenk (uniqe olan) alıp ordan büyüktür-küçüktür işaretleri arasını silerek çalışıyorum. Bunu döngüyle yapınca daha rahatıma geliyor. Regex soruna cevap değil sadece extra bir tecrübe. İstersen daha detaylı anlatabilirim.
Link to comment
Sosyal ağlarda paylaş

Mirage said:
İkisi arasındaki fark style="font-weight:bold" anladığım kadarıyla. Bu durumda bu kısmın 0 yada 1 kere olacağını belirtmen lazım. Aynı mantık yani. Doğru kısma


( style="font-weight:bold")?


koymayı dene. Boşluk işaretlerini göz önünde bulundurmayı unutma.


Bununlada olmadı artık son çare "Marks Forum Read" olayına girdim önce oraya gidiyorum sonra işlem yaptırıyorum mecburen =)
Link to comment
Sosyal ağlarda paylaş

Diazepam said:
Ben bu tarz ucu açık HTML parsing işlemlerini yaparken kodun herhangi bir yerini mihenk (uniqe olan) alıp ordan büyüktür-küçüktür işaretleri arasını silerek çalışıyorum. Bunu döngüyle yapınca daha rahatıma geliyor. Regex soruna cevap değil sadece extra bir tecrübe. İstersen daha detaylı anlatabilirim.


Çok isterim hocam biraz daha tecrübe katmayı kendime anlatabilirseniz çok harika olur tşk ederim ilginize
Link to comment
Sosyal ağlarda paylaş

Ya ben yine takıldım kaldım ne şerefsiz bişeymiş bu regex ya.

$opx = '~<a href="([^"]+)"[^>]*><img src="http://www.site.com/images/buttons/quote.gif" alt="[^"]*"[^>]*></a>~si';


buraya kadar geldim herşey dogru ama yapamadığım kısım şu;

http://www.site.com/images/buttons/ yerinde herhangi bir yazı olabilir sadece quote.gif 'i görmesi yeterli ama bir türlü olmuyo zımbırtı ya ? Yardım ederseniz tekrar yine sağolun çok soru sordum =)
Link to comment
Sosyal ağlarda paylaş

Eger url surekli boyle ise sadece quote.gif degisiyorlar, onun ismini alacaksn soyle yaparsin

hxxp://www.site.com/images/buttons/quote.gif


<a href=(.*?)><img src=http://(.*?)/(.*?)/(.*?)/(.*?)" alt=



burada perl de $1 degerine url i atar, $2 degerine siteismini atar, $3 degerine images i atar, $4 degerine buttons atar, $5 degerine quote.gif i atar

herseeyi regex e atmak zorunda degilsin, regex ogreniceksen iyide, diger turlusu hataya daha acik, spesifik olmasina ragmen. WEb den data mining yapacagin zaman en kolay yol budur. En kaba kalibi cikarirsin, oraya kadar sabit yazarsin gerisini sen doldurursun regexle, bak mesela toplam kullandigim regex karakteri 4 tane.
Link to comment
Sosyal ağlarda paylaş

işte olay orda zaten sabit değil =) href="" 'den sonra style="" geliyo rel="" geliyo hepsi değişken. Ayrıca site adıda değişken mesela. www.siteadi.com/images/blue/button/quote.gif oluyo yada siteadi.com/images/black/actionbutton/quote.gif v.s v.s gibi hepsi oluyor. Diğer türlüsünü öğrendim artık =)
Link to comment
Sosyal ağlarda paylaş

tamam bu dedigim onuda yakalar iste..

bak html de mining yapmak text dokumanindan yapmaktan cok daha kolaydir, onlarca kompleks data mining tool yazdim ayni bu amacla perl'de.

mesela html de < > taglari her yerde gecmez bunlari baslangic ve bitis olarak alabilirsin.

deneme de denemeyi cekeceksen site ismi ve deneme yazan kisim degisiyosa, orada site ismini regexde tanimlamana gerek yok. evet daha spesifik ama gereksiz.

(.*?)

bu kadari hem url i hemde denemeyi cekmek icin yeterde artar.
Link to comment
Sosyal ağlarda paylaş

nedanko said:
tamam bu dedigim onuda yakalar iste..

bak html de mining yapmak text dokumanindan yapmaktan cok daha kolaydir, onlarca kompleks data mining tool yazdim ayni bu amacla perl'de.

mesela html de < > taglari her yerde gecmez bunlari baslangic ve bitis olarak alabilirsin.

deneme de denemeyi cekeceksen site ismi ve deneme yazan kisim degisiyosa, orada site ismini regexde tanimlamana gerek yok. evet daha spesifik ama gereksiz.

(.*?)

bu kadari hem url i hemde denemeyi cekmek icin yeterde artar.


[^"] veya [^<] kullanımları rahandan öğrendim daha kaliteliymiş =)

Şimdi olay şu nedanko vbulletin forumdan kafama göre veri çekmeye uğraşıyorum. Konuda birsürü link var senin verdiğin deseni uygularsam ilk linki yakalayıp getiriyo =) Bunun sonunda quote.gif 'i görsün ki istediğim linki getirsin diye çabalıyorum aslında. quote.gif 'i görünce yakala gibi bişi diyemiyoz mu biz bu şerefsize
Link to comment
Sosyal ağlarda paylaş

html taglerinde regex baya bas agritir. ogrenmek icin bunu calisiyosan baska biseyle ogren, kullanmak icin yaziyosan hazirini bul simdilik. html specsi iyice bi yutmak lazim once. nerde whitespace olabilir, nereye hangi karakterler gelir, specde olmadigi halde hangi sekilde yaygin kullaniliyo falan bunlari cok iyi bilmek lazim.

bi de, mastering regex diye bi kitap var, o cok guzel, tavsiye ederim.

bi de, nette verdigin ornek ustunde patternleri highlight eden cok guzel scriptler var. onlar baya kolaylastiriyo.
Link to comment
Sosyal ağlarda paylaş

ya birde öğrenmek istediğim şey.

Mesela içerikte sabit şeyler var diyelim. Mesela şöyle;


"Bu konuya 5467 kere teşekkür edilmiştir."

ben bunu regex ile bulup ( ki artık kendim bulabiliyorum ) silebilir miyim o yazıyı ? 40 saat falan oldu uyumayalı kafa basmıyo artık =)
Link to comment
Sosyal ağlarda paylaş

×
×
  • Yeni Oluştur...