Menu
Coddy logo textTech

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. Önce bunları nasıl kullanacağımızı anlayalım:

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

Pattern pattern = Pattern.compile("cat");
// Creates a pattern to find "cat"

Metniniz için bir matcher oluşturun:

String text = "The cat and dog";
Matcher matcher = pattern.matcher(text);
// Creates a matcher for the text

Şimdi 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ı: Found at: 4

Yöntemleri anlama:

  • <b>matcher.find()</b> - Metindeki desenin bir sonraki oluşumunu arar
    • Eşleşme bulunursa true döndürür
    • Başka eşleşme yoksa false döndürür
    • Bu yüzden onu bir while döngüsünde kullanıyoruz - tüm oluşumları bulmak için
  • <b>matcher.start()</b> - find() tarafından bulunan son eşleşmenin başlangıç indeksini (pozisyonunu) döndürür
    • Örneğimizde, "The cat and dog" metninde "cat" 4. indekste başlar
    • Başarılı bir find()'den sonra çağrılmalıdır

Birden fazla eşleşme örneği:

Pattern pattern = Pattern.compile("cat");
Matcher matcher = pattern.matcher("cat and cat");

while (matcher.find()) {
   System.out.println("Found at: " + matcher.start());
}
// Output:
// Found at: 0
// Found at: 8
challenge icon

Görev

Kolay

findWords adında iki argüman alan bir metot oluşturun:

  1. Aranacak String (text)
  2. Bulunacak String (word)

Metot şu işlemleri yapmalı:

  1. Kelimenin tüm tekrarlarını bulmak için Pattern ve Matcher kullanın
  2. Kelimenin bulunduğu pozisyonları içeren bir string döndürün
  3. Pozisyonlar boşluklarla ayrılmalı

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

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

Kopya kağıdı

Pattern ve Matcher sınıfları, Java'da regex işlemleri için güçlü araçlar sağlar.

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

Pattern pattern = Pattern.compile("cat");
// Creates a pattern to find "cat"

Metniniz için bir matcher oluşturun:

String text = "The cat and dog";
Matcher matcher = pattern.matcher(text);
// Creates a matcher for the text

matcher.find() kullanarak eşleşmeleri bulun:

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

Önemli yöntemler:

  • <b>matcher.find()</b> - Desenin bir sonraki oluşumunu arar
    • Bulunursa true, başka eşleşme yoksa false döndürür
    • Tüm eşleşmeleri bulmak için döngüde kullanın
  • <b>matcher.start()</b> - Son bulunan eşleşmenin başlangıç indeksini döndürür
    • Başarılı bir find() sonrası çağırın

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) {
        // Buraya kodunuzu 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