November 27, 2015

Aslında o benim kendi düzenim olacaktı :( yine de regex için deneyeceğim.

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

November 27, 2015

Bu gibi dosyalar veri tabanı olarak kullanılmaya elverişli değildir. Veri tabanı gerekiyorsa veri tabanı kullanmanı öneririm. Çoğu durumda SQLite yetiyor. Nerede bulabileceğini hatırlatıyorum:

http://code.dlang.org/

Bu dosyalar veri tabanı olarak değil de HTML dosyası oluştururken kullanmak üzere ise, önerdiğin gibi düzenler kullanılabilir. O durumda da JSON veya YAML gibi yaygın düzenlerden birisini kullanmanı öneririm. (Gösterdiğin düzeni tanımıyorum; belki o da yaygın bir düzendir. :) )

Ali

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

November 28, 2015

Merhaba, bu konudaki yorumları okuyunca aklıma şu sorular geldi:

  1. Derleyici (örn. C++ derleyicisi) veya yorumlayıcılarda (örn. python yorumlayıcısı) bulunan regex kütüphaneleri nasıl bu kadar hızlı çalışıyorlar? Çünkü mesela ben bir regex yorumlayıcısı yapmak istesem bir sürü döngü ve yineleme içine girerim ve bu da bana performans sorunu oluşturuyor. Tüm dillerin (derlenen veya yorumlanan) regex ayrıştırıcıları nasıl bu kadar hızlı çalışıyorlar? (Ya da ben öyle zannediyorum :) ).

  2. Github'da kabaca bir kaç derleyici ve yorumlayıcı kodlarına göz gezdirdim (HHVM, gcc, ruby, python falan felan), bunların hiçbiri de istenilen kod kurallarını regex kullanarak ayrıştırmamış (parse). Sorum ise bu regex bu kadar kolay, hızlı ayrıştırma işlemi yapmasına rağmen neden dil tasarlamada kullanılmıyor? Kullanılmamasındaki sebep nedir? (Bu soru yalnızca sözdizimi kurallarını kontrol etmeyi kasteder.)

Teşekkürler!

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

November 28, 2015

Regex abartıldığı kadar optime çalışmıyor. Çok karmaşık bir patternde kafayı yedirtecek kadar olasılığı hesaplamaya çalışıyor. Günümüzün bilgisayarları bunu çok rahat halledecek seviyede. Sadece biz olan biteni çok küçük seviyede algılamamız çok zor.

Yukarıda python kodunu kaç kere işleme girdiğini hesaplayacak birşey olsa herşey çok net anlaşılacak. Online olarak Regex uygulamaları var. Hazırladığım küçük bir patterni uzun bir texte aratınca ortala 500 kere döngüye sokuluyor. İşi biraz daha kızştırınca iş işten geçiyor.

https://github.com/google/re2/tree/master/re2 güzel bir kaynak buldum sanırsam. Zamanı olan inceler.

Regex işin kolayı kaçmaktır. Eğer amacınız siteyi komple taratıp, veri çekip ve ayıklamaksa kullanmak için en basit yöntem oluyor. İşe yaradığıda doğrudur.

Şimdi aklıma bir yöntem geldi işe yararmı bilemeyeceğim.

const int a = 0x0001
const int b = 0x0002
const int c = 0x0004
const int d = 0x0008
const int e = 0x0016
const int f = 0x0032
const int g = 0x0064
const int h = 0x0128

örnek metin: acdasdfgghas
örnek pattern [a-d] diyelim. a ve d harfleri arasındaki bölümleri çıkartacak.

acdasdfgghas

a | b | c | d = 15

a | c | d | a = 15

Burada tek tek karekterlere değer verip (sürekli iki kat artacak) ve bitwise | işemi yapıp bileşkesini almak olur.
Böylece acda kısmını çıkartırıp, sonraki s harfi bileşkeyi bozacağı için onu dahil etmeden önceki kısmı veri olarak alabilir.

Bissürü yöntemi var denemek size kalmış. Regex yerine şifreleme algoritmasıyla kafa patlatılsa daha yararlı :)

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

November 28, 2015

Alıntı (İbrahim):

>

Merhaba, bu konudaki yorumları okuyunca aklıma şu sorular geldi:

  1. Derleyici (örn. C++ derleyicisi) veya yorumlayıcılarda (örn. python yorumlayıcısı) bulunan regex kütüphaneleri nasıl bu kadar hızlı çalışıyorlar? Çünkü mesela ben bir regex yorumlayıcısı yapmak istesem bir sürü döngü ve yineleme içine girerim ve bu da bana performans sorunu oluşturuyor. Tüm dillerin (derlenen veya yorumlanan) regex ayrıştırıcıları nasıl bu kadar hızlı çalışıyorlar? (Ya da ben öyle zannediyorum :) ).

  2. Github'da kabaca bir kaç derleyici ve yorumlayıcı kodlarına göz gezdirdim (HHVM, gcc, ruby, python falan felan), bunların hiçbiri de istenilen kod kurallarını regex kullanarak ayrıştırmamış (parse). Sorum ise bu regex bu kadar kolay, hızlı ayrıştırma işlemi yapmasına rağmen neden dil tasarlamada kullanılmıyor? Kullanılmamasındaki sebep nedir? (Bu soru yalnızca sözdizimi kurallarını kontrol etmeyi kasteder.)

Teşekkürler!

  1. Python koca gövdeli kütüphanesiyle hızlı çalışmıyor. Biz öyle sanıyoruz. C/C++ hızlı olması doğasında olan birşey.

  2. Hızlı olmak zorundalar. Derleyici(beklenirde) yada yorumlayıcı(bu siteye neden girmiyor yav xD) yavaş çalışırsa programcının vay haline. Farklı bir yöntem kullandıkları kesin ama nasıl olduğuna hiç bakmadım.

Regex her zaman doğru cevap vermez. Hata yapmamak için yapılmış birşey olması gerekli. Hele yorumlamalı diller. Her seferinde bir hata verip ve yavaş kalırsa iş çığırından kopar.

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

November 29, 2015

Alıntı (İbrahim):

>

regex bu kadar kolay, hızlı ayrıştırma işlemi yapmasına rağmen neden dil tasarlamada kullanılmıyor?

Düzenli ifadeler, adı üstünde, düzenli ifadelerle :) çalışırken yararlı. Örneğin, bir dosyayı okumaktayız ve her satır yukarıda konuştuğumuz gibi belirli düzene uyuyor...

Programlama dili gibi başka konular hiç bu kadar basit değil. Ne kastedildiğini adım adım ayrıştırma işlemi ile anlamak gerekiyor.

Ali

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

1 2
Next ›   Last »