FilemakerTurk, AYS Bilişim ve Beyaz Net tarafından desteklenmektedir.
Filemaker Danışmanınız
AYS Bilişim
Mehmet KAYA
 0532 231 07 27
 0216 318 55 80
 mkaya@aysbilisim.net
						

Regex mantığı

0 oy
548 kez görüntülendi
Belli bir mantığa göre bir metin içerisinde arama yapmam gerekiyor. Bir metin var bunun içinde mesela söyle bir yazı var : İsim Soyisim: Serkan bayrak, Cep telefonu: 5555555555 şeklinde. Burada isim ve telefon numarasını ayrıştırmak ikisini de ayrı ayrı almak istiyorum. Nasıl yapabilirim.
20, Kasım, 2017 Scripts kategorisinde serkanbayrak (40,380 puan) tarafından soruldu

2 Cevaplar

+4 oy
 
En İyi Cevap

Yazı belirli bir standartta ise metin fonksiyonları ile ayrılabilir.

Mesela aşağıdaki gibi bir pattern olduğunu varsayalım. Çekmek istediğimiz veriler kırmızı, siyah metinlerin sabit olduğunu varasaylım.

İsim Soyisim: {isim bilgisi buraya geliyor}, Cep telefonu: {cep telefonu buraya geliyor}

 

İsim ve telefon numarasının yerini şu şekilde tespit edebiliriz.

1. İsim: İki nokta üst üste karakterinden sonra başlar ve metindeki son virgüle kadar devam eder.

2. Cep No: İkinci iki nokta üst üste karakterinden sonra başlar ve metnin sonuna kadar devam eder.

 

Position fonksionu ile bu karakterlerin yerini tespit edip, middle fonksiyonu ile aradan alabiliriz. Let fonskiyonu ile de hesaplamayı daha okunur hale getirmek mümkün.

 

Mesela isim için aşağıdaki hesaplama işimizi görecektir;

 

Let (

[

   ~baslangicKarakteri = Position ( metinAlani ; ":" ; 1 ; 1 ) + 1 ;

   ~bitisKarakteri = Position ( metinAlani ; "," ; 1 ; 1 );

   ~karakterSay = ~bitisKarakteri - ~baslangicKarakteri

];

   Middle (  metinAlani ; ~baslangicKarakteri ; ~karakterSay )

)

 

20, Kasım, 2017 F. Osman Cabi (198,120 puan) tarafından cevaplandı
20, Kasım, 2017 Mehmet KAYA tarafından seçilmiş
Çok teşekkür ederim. İşime yaradı bu şekilde çözdüm.
+1 oy

Herkese selam ederim;

 

https://www.briandunning.com/cf/934 buradaki fonksiyon işinizi görür sanırım. Test ettim; Sonuçlar olumlu görünüyor.

 

OrnekDosya

 

Sayglarımla.

20, Kasım, 2017 ercanD (71,080 puan) tarafından cevaplandı
20, Kasım, 2017 ercanD tarafından düzenlendi
Fonksiyonda büyük küçük harf ve Türkçe karakter sorunu vardı. A<şağıdaki şekilde bir düzenleme yaptım fonksiyona uygularsanız düzelecektir.

Let (
ft = Substitute(AZaz09etc; ["AZ"; "AaBbCcÇçDdEeFfGgĞğHhIıJiİjKkLlMmNnOoÖöPpQqRrSsŞşTtUuÜüVvWwXxYyZz"]; ["09"; "0123456789" ]);

Filter(text; ft)
)
...