Düzenli İfadelerin Kullanımı
Genel Bilgiler
A-Parser içerisinde Perl/JavaScript uyumlu düzenli ifadeler (regex) kullanılır ve şu alanlarda uygulanabilir:
- Herhangi bir siteden rastgele bilgi veri çekme işlemi sırasında
- Sorgu oluşturucuda sorgunun bir kısmını ayıklamak veya değiştirmek için
- Sonuç oluşturucuda herhangi bir sonucu dönüştürmek için
- Filtreleri kullanırken
- Düzenli ifade oluşturucuda
Net::HTTP veri kazıyıcıda sonraki sayfanın kullanılabilirliğini kontrol ederken
Düzenli ifadeler hakkında detaylı dokümantasyonu aşağıdaki kaynaklarda bulabilirsiniz:
- Wikipedia'da Düzenli İfadeler
- PCRE standardı düzenli ifadeler evrensel ansiklopedisi
- Forumdaki Düzenli ifadelerimizi paylaşıyoruz konusu
A-Parser içerisinde herhangi bir sonucu düzenli ifade yardımıyla işleme imkanı mevcuttur, bunun için Parse custom results (Regex kullan) seçeneği kullanılır:

Kullanım Özellikleri ve Bayraklar
- Düzenli ifadeler
//sınırlayıcıları olmadan yazılır - Aşağıdaki bayraklar desteklenir:
- i - büyük/küçük harf duyarsız arama
- s - nokta sembolü, satır sonları dahil tüm karakterleri kapsar
- g - küresel arama veya değiştirme
Ek olarak, düzenli ifadenin içinde de bayrak belirtmek mümkündür; örneğin, tüm metindeki (veya düzenli ifadenin uygulandığı sayfa kodundaki) her satırda test kelimesini m bayrağını (multi line - ^ ve $ sembolleri sırasıyla satır başı ve sonu olarak çalışır) kullanarak aramak için:
(?m)^(.+?test.+?)$
Rastgele Bilgi Ayıklama

Parse custom results (Regex kullan) seçeneği veya Sonuç oluşturucu yardımıyla, veri çekme sonuçlarından (örneğin HTML sayfalarının kaynak kodundan veya önceden hazırlanmış sonuçlardan) rastgele bilgi ayıklamak için düzenli ifadeler kullanmak mümkündür:
- Parse result (On) (Şuna uygula) kısmında veri kazıyıcıdan gelen sonuç seçilir; bu basit bir sonuç veya bir dizi olabilir
- Düzenli ifade sınırlayıcılar olmadan belirtilir, hemen ardından bayrak belirtme imkanı vardır
- Result type (Sonuç türü) kısmında sonucun türü belirtilir -
Flat(basit sonuç) veyaArray(dizi). Kaynak sonuç olarak bir dizi seçilmişse veya düzenli ifadede g bayrağı kullanılıyorsa, sonuç her zaman bir diziye kaydedilir. Name (Ad) alanında dizinin adı belirtilir - Düzenli ifadedeki her yakalama parantezi ayrı bir öğe olarak kaydedilebilir; öğenin adı ilgili alana $1 to, $2 to... şeklinde yazılır - burada rakam yakalama parantezinin numarasını temsil eder
- RegEx (Regex) alanında şablon motoru kullanılabilir, bu da sorgunun düzenli ifadenin bir parçası olarak kullanılmasına olanak tanır
Oluşturulan yeni sonuçlar sonuç biçimlendirme, sonuç oluşturucu, filtreleme ve sonuç deduplikasyonu işlemlerinde veya bir sonraki Parse custom results (Regex kullan) seçeneğinde kullanılabilir.
Bu seçenek, RegEx Match kullanıldığında sonuç oluşturucuya benzer şekilde çalışır.
Kaynak HTML Kodundan Resim Bağlantılarını Çekme Örneği

Bu sorunu çözmek için sayfanın kaynak kodunu almak üzere
Net::HTTP veri kazıyıcısını kullanıyoruz.
$data (indirilen sayfa) değişkenine isg bayraklarıyla düzenli ifadeyi uyguluyoruz ve sonucu images dizisinin src öğelerine kaydediyoruz.
Sonuç formatında, tüm src öğelerini satır sonu karakteriyle ayırarak yazdırmayı belirtiyoruz.
Veri çekme sonucunda http://a-parser.com/ sorgusu için sonuç dosyasında aşağıdaki listeyi elde ederiz:
/img/lang/en.png
/img/lang/ru.png
img/[email protected]
https://files.a-parser.com/img/site/tour_ru/V1qpV.png
https://files.a-parser.com/img/site/tour_ru/tour_ru_1_all_parsers_list.png
https://files.a-parser.com/img/site/tour_ru/tour_ru_1_quick_task.png
https://files.a-parser.com/img/site/tour_ru/tour_ru_2_task_editor_easy.png
https://files.a-parser.com/img/site/tour_ru/tour_ru_3_task_editor_analyze_domains.png
https://files.a-parser.com/img/site/tour_ru/tour_ru_4_task_editor_parse_emails.png
https://files.a-parser.com/img/site/tour_ru/tour_ru_5_queue_fast_google.png
https://files.a-parser.com/img/site/tour_ru/tour_ru_6_queue_spyserp.png
https://files.a-parser.com/img/site/tour_ru/tour_ru_7_javascript_parser.png
https://files.a-parser.com/img/site/tour_ru/tour_ru_8_scheduler.png
https://files.a-parser.com/img/site/tour_ru/tour_ru_9_settings.png
https://files.a-parser.com/img/site/tour_ru/tour_ru_10_proxies.png
https://files.a-parser.com/img/site/tour_ru/tour_ru_11_templates.png
https://files.a-parser.com/img/site/tour_ru/tour_ru_12_task_tester.png
https://files.a-parser.com/img/site/tour_ru/tour_ru_13_parser_test.png
https://files.a-parser.com/img/site/tour_ru/tour_ru_14_api.png
https://files.a-parser.com/img/site/tour_ru/tour_ru_15_resources.png
data/avatars/s/0/12.jpg?1507557563
data/avatars/s/0/12.jpg?1507557563
data/avatars/s/13/13392.jpg?1570706020
data/avatars/s/16/16560.jpg?1586782475
data/avatars/s/1/1240.jpg?1537376153
styles/uix/xenforo/avatars/avatar_s.png
data/avatars/s/0/371.jpg?1412969226
styles/uix/xenforo/avatars/avatar_s.png
//mc.yandex.ru/watch/26891250
Örneği indir
A-Parser örnek nasıl içe aktarılır
eJxtVN9v2jAQ/l8sJArqYH3YS7Stokhomxgwmj5BJlnkyLz612yHFUX533d2Egfa
vYDv7rvvvvNdXBFH7bPdGLDgLEl2FdHhTBKSw5GW3JFboqmxYHx4R1bgkuRLmm7Q
HxEVcWcNmHMorVNiC7ZJNM0BuaijwS7gBc2PTBS7n5+zsTWH/d6OP/mf3XBPspvJ
+H4UTh08bZiZLSJh66LG0DM6w/+KigATtAAbkV4zwSIkq3uR6gTGsBwQxXK0j8oI
6kwn+kR56WGDhmvShG+GgyBWDkekzrJYYBGiHq7vJu3dxeAjPUGqfAnGoXcv0Gr1
DvBmwEe7MqOJe/EMNM+ZY0pS3lTwnfRVnyT7E0RKhVg8GgZ2YZRAl4NA4J3nTt2O
DIJNkKIMuT+aHJIcKbdwSyxKXVAUkr+OMAeGOmXW2utBf0WUnHG+hBPwHhb4H0rG
c1yV2RGTvraJ/4es33DUsb3LUjisvwY1RJZgPay/91m5WqqiuwzOBHNo27kqpR/M
e3Q+A+h4ZysPE8pALNMyt9Xxa9Ag/Wb0I5vp3nXVxtVYrp0HJY+sWLfb1iFLmeIn
t5ZzJTQH35csOcexWNj26zGz7Ri80Qt8nTwPJa4+VqcUt98eG6naMFy/D16gwJu8
rNpSHijnT9vlZYT0K4XGL+e0TaZT+q55BiYHJabEJzooFK4UtlVn8ZGIT0l18VQk
VY1j+m03Dcb35BHow8uxOAOS3NX/AFJvlP8=
Düzenli İfade Oluşturucu
1.2.78 sürümünden itibaren Düzenli İfade Oluşturucu eklenmiştir.
Bunu Tools -> Regex Builder sekmesinde bulabilirsiniz. Ayrıca elde edilen sayfa kodunu doğrudan Test Veri Çekme kısmından gönderebilirsiniz. Bunun için debug modunu açmanız ve Go to RegEx Builder bağlantısına tıklamanız gerekir.

Oluşturucuda, elde edilen düzenli ifadelerin kullanılacağı programlama dilini seçme imkanı vardır.
Oluşturucu ile çalışmak için sol taraftaki alana kaynak metni yapıştırmanız gerekir (veya Go to Regex Builder geçişi yapıldığında Test Veri Çekme kısmından otomatik olarak yapıştırılacaktır). Sağ tarafta ise gelecekteki düzenli ifadenin parametrelerini ayarlıyoruz.
Basit bir Düzenli İfade oluşturmak için (örneğin, başlığı almak için) düzenli ifadenin gerekli öğelerini belirtmek yeterlidir.
- Before group (Gruptan önce) alanına, ihtiyacımız olan bilgiden önce gelen karakterleri yazıyoruz
- After group (Gruptan sonra) alanına, gerekli verilerden sonra gelen karakterleri yazıyoruz
- Grup şununla başlar kısmında, aranan dizenin başlaması gereken karakterleri belirtiyoruz
- Group ends with (Grup şununla biter) kısmında, aranan dizenin sonunda olması gereken karakterleri belirtiyoruz

Yukarıdaki ekran görüntüsünde görüldüğü gibi, sitenin title bilgisini seçecek bir düzenli ifade oluşturuyoruz. Gruptan önce <title> ve gruptan sonra </title> koyuyoruz, ayrıca örnek olarak aranan dizenin W harfi ile başladığını belirtiyoruz.
Elde edilen düzenli ifadeyi tam olarak test etmek için gerekli bayrakları açma imkanı vardır: g, s ve i.
Ayrıca 2 veya daha fazla grup içeren daha karmaşık düzenli ifadeler de oluşturulabilir.
Örnek olarak, <li> listesindeki tüm bağlantıları ve çıpaları (anchor) toplamak için bir düzenli ifade oluşturmayı deneyelim. Bunun için g bayrağını açmamız ve bir arama grubu daha eklememiz gerekir, çünkü ilk grupta bağlantılar, ikinci grupta ise çıpalar olacaktır.

Her iki grup için gerekli parametreleri ayarladıktan sonra şu düzenli ifadeyi elde ederiz:
<li><a href="(.+?)">(.+?)<\/a
Düzenli ifadeyi kontrol etmek için Test düğmesine basın:

Düzenli ifade çalıştırıldıktan sonra, alt kısımda çalışmasının sonucu görüntülenir: tam satır ve yakalanan gruplar. Sonuç tablosundaki herhangi bir öğeye çift tıklandığında, başlangıç metni bu eşleşmenin bulunduğu yere kaydırılır.
Faydalı Bağlantılar
🔗 Yeni başlayanlar için düzenli ifadeler
Benim adım Vitaliy Kotov ve düzenli ifadeler hakkında biraz bilgim var. Yazının devamında onlarla çalışmanın temellerini anlatacağım...
🔗 Düzenli ifadeler (regexp) — temeller
Düzenli ifadeler, metin arama ve değiştirme mekanizmasıdır. Bir satırda, dosyada, birden fazla dosyada...
🔗 ⏩Endüstriyel ekipman kataloğu veri çekme
Endüstriyel ekipman kataloğu veri çekme işleminde düzenli ifadelerin kullanım örneği
🔗 ⏩Booking.com kaynağı veri çekme
Booking.com kaynağı veri çekme işleminde düzenli ifadelerin kullanım örneği
🔗 ⏩İletişim sayfalarını bulma
İletişim sayfaları veri çekme işleminde düzenli ifadelerin kullanım örneği