0Pricing
Java Academy · Ders

Yakalama Grupları

Eşleşen alt dizeleri çıkarın

Yakalama Grupları, CoddyKit'te ücretsiz bir Java Academy dersidir. Bu, 4 dersinin 3. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Java Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Java Academy kursu toplamda 4 dersten oluşur.

Yakalama Grupları Nedir

Düzenli ifadede ( ) parantezleri yakalama grupları oluşturur. Bir eşleşmeden sonra her grubun metnini ayrı ayrı çıkarabilirsiniz; bu, yapılandırılmış verileri ayrıştırmak için idealdir.

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

public class Main {
    public static void main(String[] args) {
        Matcher m = Pattern.compile("(\\d+)-(\\d+)").matcher("42-99");
        if (m.find()) {
            System.out.println(m.group(1));
            System.out.println(m.group(2));
        }
    }
}

Grup 0 Eşleşmenin Tamamıdır

group(0) (veya group()), eşleşen metnin tamamını döndürür. Numaralı gruplar 1'den başlar.

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

public class Main {
    public static void main(String[] args) {
        Matcher m = Pattern.compile("(\\d+)px").matcher("width: 24px");
        if (m.find()) {
            System.out.println(m.group(0));
            System.out.println(m.group(1));
        }
    }
}

Grupları Sayma

groupCount(), desendeki yakalama gruplarının sayısını bildirir (grup 0 hesaba katılmaz).

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

public class Main {
    public static void main(String[] args) {
        Matcher m = Pattern.compile("(\\d{4})-(\\d{2})-(\\d{2})").matcher("2026-05-30");
        if (m.find()) System.out.println(m.groupCount());
    }
}

Tarih Ayrıştırma

Yakalama grupları, biçimlendirilmiş bir değeri parçalara ayırmayı kolaylaştırır.

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

public class Main {
    public static void main(String[] args) {
        Matcher m = Pattern.compile("(\\d{4})-(\\d{2})-(\\d{2})").matcher("2026-05-30");
        if (m.matches()) {
            System.out.println("year=" + m.group(1));
            System.out.println("month=" + m.group(2));
            System.out.println("day=" + m.group(3));
        }
    }
}

Adlandırılmış Gruplar

(?<name>...) ile bir gruba ad verin ve grubu adına göre alın. Bu, desenleri çok daha okunabilir hâle getirir.

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

public class Main {
    public static void main(String[] args) {
        Pattern p = Pattern.compile("(?<user>\\w+)@(?<host>\\w+\\.\\w+)");
        Matcher m = p.matcher("alice@example.com");
        if (m.find()) {
            System.out.println(m.group("user"));
            System.out.println(m.group("host"));
        }
    }
}

Grup Sınırları

start(n) ve end(n), belirli bir grubun girdi içindeki dizin aralığını verir.

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

public class Main {
    public static void main(String[] args) {
        Matcher m = Pattern.compile("(\\d+)").matcher("abc123");
        if (m.find()) {
            System.out.println(m.start(1) + " to " + m.end(1));
        }
    }
}

Yakalamayan Gruplar

Alternatifler veya niceleyiciler için gruplama yapmak, ancak numaralı bir yakalama oluşturmamak için (?:...) kullanın. Bu, grup numaralarının anlamlı kalmasını sağlar.

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

public class Main {
    public static void main(String[] args) {
        Matcher m = Pattern.compile("(?:Mr|Ms)\\.? (\\w+)").matcher("Ms. Smith");
        if (m.find()) System.out.println(m.group(1));
    }
}

İsteğe Bağlı Gruplar null Olabilir

Bir grup isteğe bağlıysa ve eşleşmeye katılmadıysa group(n), null döndürür. Bu durumu her zaman ele alın.

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

public class Main {
    public static void main(String[] args) {
        Matcher m = Pattern.compile("(\\d+)(px)?").matcher("50");
        if (m.matches()) {
            System.out.println(m.group(1));
            System.out.println(m.group(2));
        }
    }
}

Gruplarla Eşleşmelerin Üzerinde Yineleme

Daha büyük bir metinden yapılandırılmış belirteçleri çıkarmak için bir döngüdeki find çağrısını grup çıkarma işlemiyle birleştirin.

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

public class Main {
    public static void main(String[] args) {
        Matcher m = Pattern.compile("(\\w+)=(\\d+)").matcher("a=1 b=2 c=3");
        while (m.find()) {
            System.out.println(m.group(1) + " -> " + m.group(2));
        }
    }
}

Desendeki Geri Başvurular

Bir düzenli ifade içinde \1, önceki bir grubun yakaladığı metnin aynısıyla eşleşir. Bu, iki kez yazılmış bir sözcük gibi yinelemeleri algılar.

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

public class Main {
    public static void main(String[] args) {
        Matcher m = Pattern.compile("(\\w+) \\1").matcher("the the cat");
        System.out.println(m.find());
        System.out.println(m.group(1));
    }
}

Kayıtlara Yakalama

Temiz bir desen şu adımlardan oluşur: eşleştirin, grupları çıkarın ve küçük bir nesne oluşturun. Burada bir kayıt kullanıyoruz.

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

public class Main {
    record Point(int x, int y) {}

    public static void main(String[] args) {
        Matcher m = Pattern.compile("\\((\\d+),(\\d+)\\)").matcher("(3,7)");
        if (m.matches()) {
            Point p = new Point(Integer.parseInt(m.group(1)), Integer.parseInt(m.group(2)));
            System.out.println(p);
        }
    }
}

Hızlı Kontrol

Başarılı bir eşleşmeden sonra group(0) ne döndürür?

Özet

Eşleşen alt dizeleri çıkardınız:

  • Parantezler numaralı gruplar oluşturur; group(0) eşleşmenin tamamıdır, 1 ve üzeri gruplar ise yakalamalardır.
  • (?<name>...), group("name") aracılığıyla okunan adlandırılmış gruplar oluşturur.
  • (?:...), yakalama yapmadan gruplar.
  • İsteğe bağlı gruplar null olabilir; \1 önceki bir gruba geri başvurur.

Sıkça Sorulan Sorular

“Yakalama Grupları” dersi ücretsiz mi?

Evet — “Yakalama Grupları” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Java Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Java Academy kursu toplamda 4 dersten oluşur.

“Yakalama Grupları” dersinde ne öğreneceğim?

Eşleşen alt dizeleri çıkarın Java Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

Java Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te Java Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 3. dersidir.

“Yakalama Grupları” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu Java Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her Java Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. Örüntüleri Derleme
  2. Bulma ve Eşleştirme
  3. Yakalama Grupları
  4. Düzenli İfadelerle Değiştirme
← Java Academy Sayfasına Dön