Menu
CoddyTech

Regex ile Desen Eşleştirme

Coddy'nin Java Journey'sinin Mantık & Akış bölümünün bir parçası. Ders 47 / 59.

Pattern ve Matcher sınıfları, Java'da regex işlemleri için güçlü araçlar sağlar. Öncelikle, bunların nasıl kullanılacağını anlayalım:

Pattern.compile() kullanarak bir pattern oluşturun:

Pattern pattern = Pattern.compile("cat");
// "cat" bulmak için bir desen oluşturur

Metniniz için bir matcher oluşturun:

String text = "The cat and dog";
Matcher matcher = pattern.matcher(text);
// Metin için bir matcher oluşturur

Artık matcher.find() kullanarak eşleşmeleri bulabilirsiniz:

while (matcher.find()) {
   System.out.println("Found at: " + matcher.start());
}

Yukarıdaki kodu çalıştırdıktan sonra çıktı şöyledir: Found at: 4

Metotları anlama:

  • matcher.find() - Metinde kalıbın bir sonraki oluşumunu arar
    • Bir eşleşme bulunursa true döndürür
    • Başka eşleşme yoksa false döndürür
    • Bu nedenle tüm oluşumları bulmak için bunu bir while döngüsünde kullanırız
  • matcher.start() - find() tarafından bulunan son eşleşmenin başlangıç indeksini (konumunu) döndürür
    • Örneğimizde, "cat", "The cat and dog" içinde 4. indekste başlar
    • Başarılı bir find() çağrısından sonra çağrılmalıdır

Birden fazla eşleşme içeren örnek:

Pattern pattern = Pattern.compile("cat");
Matcher matcher = pattern.matcher("cat and cat");
while (matcher.find()) {
   System.out.println("Found at: " + matcher.start());
}
// Çıktı:
// Bulundu: 0
// Bulundu: 8
challenge icon

Görev

Kolay

findWords adlı ve iki bağımsız değişken alan bir yöntem oluşturun:

  1. İçinde arama yapılacak bir String (text)
  2. Bulunacak bir String (word)

Yöntem şunları yapmalıdır:

  1. Kelimenin tüm oluşumlarını bulmak için Pattern ve Matcher kullanın
  2. Kelimenin bulunduğu konumları içeren bir dize döndürün
  3. Konumlar boşluklarla ayrılmalıdır

Döndürülecek mesajlar şöyle olmalıdır:

  • Herhangi bir girdi null ise: "Invalid input" döndürün
  • Kelime bulunamazsa: "Not found" döndürün
  • Bulunursa: konumları döndürün (ör. "4 10 15")

Kendin dene

import java.util.Scanner;
import java.util.regex.Pattern;
import java.util.regex.Matcher;

public class Main {
    public static String findWords(String text, String word) {
        // Kodunuzu buraya yazın
    }
    
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String text = scanner.nextLine();
        String word = scanner.nextLine();
        
        if (text.equals("null")) text = null;
        if (word.equals("null")) word = null;
        
        System.out.println(findWords(text, word));
    }
}
quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

Mantık & Akış bölümündeki tüm dersler

Kendi başına pratik yap: Online Java derleyicisi

Bir kalıbı kendi metninde dene: Regex Test Aracı