Konuyu Oyla:
  • Derecelendirme: 3/5 - 1 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Regex ile HTML veri ayrıştırma (Regular Expressions)
#1
Merhaba;

Regex (Regular Expressions) ile HTML veri ayrıştırma yapmak istiyorum. Bu konuda biraz kaynak sıkıntısı olduğundan sizlere danışmak istedim.

Veri ayrıştırma denemeleri testleri için bu link kullanılabiliyormuş fakat mantığı konusunda sıkıntı yaşıyorum.

<td class="dxgv">USG</td><td class="dxgv" onclick="javascript:satis_goster('USG 20-320-010')">USG 20-320-010</td><td class="dxgv">2B14 2261 AA</td><td class="dxgv">3387348</td><td class="dxgv">USG 41-1250</td><td class="dxgv">Deneme Ürün : ABC</td><td class="dxgv">&nbsp;</td><td class="dxgv">CONNECT</td><td class="dxgv">UM</td><td class="dxgv">02-</td><td align="center" class="dxgv" id="ctl00_MainContent_urunler_tccell0_10">
                           <img onclick="JavaScript:window360('USG 20-320-010','Images/ikon_360derece.png');" alt="" src="Images/ikon_360derece.png">
                       </td><td align="right" class="dxgv">13,60</td><td align="center" class="dxgv" id="ctl00_MainContent_urunler_tccell0_12" onmouseover="ddrivetip('KDV Dahil fiyat : 52,96 TL.<br />Bu üründen kazanacağınız hediye puan&amp;nbsp;:&amp;nbsp;1.','yellow', 300)" onmouseout="hideddrivetip()">
                           <span id="ctl00_MainContent_urunler_cell0_12_NetFiyat">30,98</span>

Yukarıda HTML bir kısmını yazdım, yapmak istediğim. "> ile </ arasındaki değerleri almak. Bunu nasıl yapabilirim.

Teşekkürler.
Cevapla
#2
Belirli taglar arasındakini mi tüm tagları mı
WWW
Cevapla
#3
(22-09-2016, Saat: 15:50)yhackup Adlı Kullanıcıdan Alıntı: Belirli taglar arasındakini mi tüm tagları mı

Yukarıda belirttiğim gibide olabilir veya
<td class="dxgv">
 ile başlayanların arasında almak istiyorum.
Cevapla
#4
Selam,

Mantığı anlamanız açısından aşağıdaki gibi basitçe yapabilirsiniz, ben denedim sonuç güzel ama daha ayrıştırılması gereken alanlar çıkıyor karşınıza.

var
yer1,yer2:integer;
a:ansistring;
parca : string;
begin
a:=memo1.Lines.Text;

yer2:=2;
while yer2>1 do begin
yer1:=pos('">',a); // > işaretini bul
delete(a,1,yer1+1); // oraya kadar sil
yer2:=pos('</',a); // </ işaretini bul
parca := copy(a,1,yer2-1); // arasını al
delete(a,1,yer2+2); // yer2 ye kadar sil
memo2.Lines.Add(parca);
               end;
WWW
Cevapla
#5
(22-09-2016, Saat: 17:29)esistem Adlı Kullanıcıdan Alıntı: Selam,

Mantığı anlamanız açısından aşağıdaki gibi basitçe yapabilirsiniz, ben denedim sonuç güzel ama daha ayrıştırılması gereken alanlar çıkıyor karşınıza.

var
yer1,yer2:integer;
a:ansistring;
parca : string;
begin
a:=memo1.Lines.Text;

yer2:=2;
while yer2>1 do begin
yer1:=pos('">',a); // > işaretini bul
delete(a,1,yer1+1); // oraya kadar sil
yer2:=pos('</',a); // </ işaretini bul
parca := copy(a,1,yer2-1); // arasını al
delete(a,1,yer2+2); // yer2 ye kadar sil
memo2.Lines.Add(parca);
               end;

Cevap için teşekkür ederim @esistem.
Regular Expressions ile çözmek istememin sebebi çok fazla kod yazmamak o yüzden Regular Expressions ile nasıl çözülürü araştırıyorum.
Cevapla
#6
Ben regular olayına bi türlü ısınamadım o yüzden kullanmıyorum genelde bu şekilde çözüyorum işimi.
WWW
Cevapla
#7
Bende @esistem gibi Delete, Pos fonksiyonlarını kullanarak almıştım en kolayı

yinede bununla ilgili bir örnek vardı elimde arıyorum bulunca atarım buraya
WWW
Cevapla
#8
(22-09-2016, Saat: 15:13)pro_imaj Adlı Kullanıcıdan Alıntı: Merhaba;

Regex (Regular Expressions) ile HTML veri ayrıştırma yapmak istiyorum. Bu konuda biraz kaynak sıkıntısı olduğundan sizlere danışmak istedim.

Veri ayrıştırma denemeleri testleri için bu link kullanılabiliyormuş fakat mantığı konusunda sıkıntı yaşıyorum.

<td class="dxgv">USG</td><td class="dxgv" onclick="javascript:satis_goster('USG 20-320-010')">USG 20-320-010</td><td class="dxgv">2B14 2261 AA</td><td class="dxgv">3387348</td><td class="dxgv">USG 41-1250</td><td class="dxgv">Deneme Ürün : ABC</td><td class="dxgv">&nbsp;</td><td class="dxgv">CONNECT</td><td class="dxgv">UM</td><td class="dxgv">02-</td><td align="center" class="dxgv" id="ctl00_MainContent_urunler_tccell0_10">
                           <img onclick="JavaScript:window360('USG 20-320-010','Images/ikon_360derece.png');" alt="" src="Images/ikon_360derece.png">
                       </td><td align="right" class="dxgv">13,60</td><td align="center" class="dxgv" id="ctl00_MainContent_urunler_tccell0_12" onmouseover="ddrivetip('KDV Dahil fiyat : 52,96 TL.<br />Bu üründen kazanacağınız hediye puan&amp;nbsp;:&amp;nbsp;1.','yellow', 300)" onmouseout="hideddrivetip()">
                           <span id="ctl00_MainContent_urunler_cell0_12_NetFiyat">30,98</span>

Yukarıda HTML bir kısmını yazdım, yapmak istediğim. "> ile </ arasındaki değerleri almak. Bunu nasıl yapabilirim.

Teşekkürler.

Merhaba,
Bu RegEx olayı çok garip bir o kadar da zevkli. Bir kaç karakter ile istediğiniz sonuç kümesini alabiliyorsunuz.
Üzerinde biraz çalıştım. İstediğiniz sonucu veriyor. Yalnızca en sondaki küçüktür (<) karakterini atamadım. Onu da siz halledin.  Smile 

Düzenli ifade:

[^">]+<

Sonuç:

235ugi.jpg
While true do; Hayat döngüsü, kısır değildir! Yapılan bir yanlış, o döngünün dışına çıkmanızı sağlayacaktır.
WWW
Cevapla
#9
Şurada detaylı açıklama var belki işinize yarar
http://docwiki.embarcadero.com/RADStudio...xpressions
WWW
Cevapla
#10
Yardımlarınız için çok teşekkür ederim. Fesih Hocam dediğiniz gibi oluyor bu gece fazlaca bu konuda çalışma yapacağım.

Arkadaşlar bahsettiğim konu buydu, Fesih hocamında belirttiği gibi; Yüzlerce satırlık HTML kodu için string işlem yaparken herhangi bir değişiklikte tekrar uğraşmak zaman alırken burada sadece ufak bir hareketle hemen düzeliyor.


Teşekkürler.
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  ComboBox da Veri Listelemek OZCANK 15 941 25-04-2020, Saat: 09:01
Son Yorum: OZCANK
  Blok Chain den veri çeken var mı ? enigma 3 246 22-04-2020, Saat: 16:06
Son Yorum: SimaWB
  Firebird veri tabanlı programda arama filitreleme baloglurecep 3 342 18-03-2020, Saat: 11:51
Son Yorum: anemos
  String'e çevrilmiş Stream Veri JsontoDataSet Dönüştürme Sorunu. pro_imaj 13 1.205 06-03-2020, Saat: 15:19
Son Yorum: Fesih ARSLAN
  Metre Sayacından Veri Alma bsogulcan 3 654 04-01-2020, Saat: 16:15
Son Yorum: QuAdR



Konuyu Okuyanlar: 1 Ziyaretçi