Regex ile kod dosyasında fonksiyon tespiti nasıl yapılır?

Katılım
14 Eylül 2020
Mesajlar
2.981
Çözümler
72
Yer
İstanbul
Bir uygulamada regex ile dil tespiti tarzı bir şey yapmaya çalışıyorum. Aşağıdaki kod parçasını deniyorum. Şu anda sadece 2, 3 ve 6. satırlar uyuyor. Fakat benim istediğim bu parçada 4. satır dışında diğerlerine uyması. İfadede nasıl bir düzenleme yapmam gerekiyor?
Kullandığım regex: [A-Za-z0-9]{1,}\([a-zA-Z0-9\t\n ./<>?;:"'`!@#$%^&*()\[\]{}_+=|\\-]{1,}\)\;.

C-like:
println("Hello, world!");
println("");
print("What's your name?");
var username = readInput();
print("Hi, ");
println(username);
readInput();
 
Regex ile dil tespiti yapılamaz. Bütün kelimeleri tanıtmanız gerekir, pattern ile olmaz kısaca. Yada makine öğrenimi gerekiyor.
 
Kendim de regex'de pek iyi değilim, ama pratik olsun diye şansımı denemek istiyorum.
Burada parçalara böleceğim match edeceğim stringi.

Anladığım kadarıyla fonksiyon call eden satırları match etmek istiyorsun, fonksiyon tanımlarını değil.

Fonksiyon isimleri:
Herhangi bir alfabetik veya `_` karakterleri ile baslamali.
Bu ilk karakterin ardindan istenilen sayida alfanumerik veya `_` karakterleri kullanilabilir.

Yani patternimiz şöyle olmalı:

İlk karakter: A'dan z'ye tüm karakterler ve _ karakteri. ([A-z]|_)
Ardından gelen karakterler: A'dan z'ye tüm karakterler, 0-9'a tüm sayılar ve _ karakteri. ([A-z]|[0-9]|_)*

Bunlarla beraber fonksiyon adını oluşturabildik.
Parametreleri verdiğimiz parantezleri ve içine verdiğimiz argümanları da şu şekilde yazabiliriz:
\(.*\)

Benim çözümüm: regex101: build, test, and debug regex

Biraz janky bir çözüm oldu, daha iyi sonuçlara ulaşacak arkadaşlar mutlaka vardır
 
Bu siteyi kullanmak için çerezler gereklidir. Siteyi kullanmaya devam etmek için çerezleri kabul etmelisiniz. Daha Fazlasını Öğren.…