Örüntüleri Derleme
Pattern.compile ve Matcher
Örüntüleri Derleme, CoddyKit'te ücretsiz bir Java Academy dersidir. Bu, 4 dersinin 1. 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.
Düzenli İfade Kalıbı ve Eşleştirici İkilisi
Java'da düzenli ifadeler java.util.regex içinde bulunur. Bir Pattern, derlenmiş bir düzenli ifadedir; bir Matcher ise bu kalıbı belirli bir girdiye uygular.
import java.util.regex.Pattern;
import java.util.regex.Matcher;
public class Main {
public static void main(String[] args) {
Pattern p = Pattern.compile("\\d+");
Matcher m = p.matcher("abc123");
System.out.println(m.find());
}
}Bir Kez Derleyip Sıkça Yeniden Kullanma
Pattern.compile görece maliyetlidir. Bir deseni bir kez derleyin ve bir döngüde yeniden derlemek yerine birçok girdide yeniden kullanın.
import java.util.regex.Pattern;
public class Main {
static final Pattern DIGITS = Pattern.compile("\\d+");
public static void main(String[] args) {
System.out.println(DIGITS.matcher("a1").find());
System.out.println(DIGITS.matcher("bb").find());
}
}Java'da Ters Eğik Çizgilerden Kaçış
\d gibi düzenli ifade belirteçleri bir ters eğik çizgi gerektirir; ancak Java dizeleri de kaçışlar için ters eğik çizgi kullanır. Bu nedenle kaynak kodunda, düzenli ifade olarak \d anlamına gelmesi için \\d yazarsınız.
import java.util.regex.Pattern;
public class Main {
public static void main(String[] args) {
Pattern word = Pattern.compile("\\w+");
System.out.println(word.matcher("hello").matches());
}
}Bir Matcher Oluşturma
pattern.matcher(input), deseni bir girdi dizesine bağlar ve konumu izleyen yeni bir Matcher döndürür.
import java.util.regex.Pattern;
import java.util.regex.Matcher;
public class Main {
public static void main(String[] args) {
Pattern p = Pattern.compile("cat");
Matcher m = p.matcher("the cat sat");
System.out.println(m.find());
}
}Matcher'lar Durum Bilgisi Taşır
Bir Matcher, değiştirilebilir bir durum (geçerli konum ve son eşleşme) tutar. Her girdi için yeni bir eşleştirici oluşturun; bir eşleştiriciyi iş parçacıkları arasında paylaşmayın.
import java.util.regex.Pattern;
import java.util.regex.Matcher;
public class Main {
public static void main(String[] args) {
Pattern p = Pattern.compile("\\d");
Matcher m = p.matcher("a1b2");
System.out.println(m.find());
System.out.println(m.find());
}
}Büyük/Küçük Harfe Duyarsız Bayrak
Bayrakları compile yöntemine ikinci bağımsız değişken olarak iletin. Pattern.CASE_INSENSITIVE, harflerin büyük/küçük durumunu yok sayar.
import java.util.regex.Pattern;
public class Main {
public static void main(String[] args) {
Pattern p = Pattern.compile("java", Pattern.CASE_INSENSITIVE);
System.out.println(p.matcher("I love JAVA").find());
}
}Bayrakları Birleştirme
Bayrakları bitsel OR işleciyle birleştirin. Burada, sabitlerin her satırda eşleşmesini sağlamak için MULTILINE ekliyoruz.
import java.util.regex.Pattern;
import java.util.regex.Matcher;
public class Main {
public static void main(String[] args) {
Pattern p = Pattern.compile("^a", Pattern.CASE_INSENSITIVE | Pattern.MULTILINE);
Matcher m = p.matcher("apple\nApricot");
int count = 0;
while (m.find()) count++;
System.out.println(count);
}
}Statik matches Kısayolu
Pattern.matches(regex, input), tek bir çağrıda derleme ve test işlemlerini gerçekleştiren tek kullanımlık bir yardımcıdır. Kullanışlıdır; ancak her seferinde yeniden derleme yapar.
import java.util.regex.Pattern;
public class Main {
public static void main(String[] args) {
System.out.println(Pattern.matches("\\d{3}", "123"));
System.out.println(Pattern.matches("\\d{3}", "12"));
}
}Pattern ile Bölme
Derlenmiş bir Pattern, dizeleri split aracılığıyla bölebilir ve aynı derlenmiş düzenli ifadeyi verimli biçimde yeniden kullanabilir.
import java.util.Arrays;
import java.util.regex.Pattern;
public class Main {
public static void main(String[] args) {
Pattern comma = Pattern.compile("\\s*,\\s*");
String[] parts = comma.split("a, b ,c, d");
System.out.println(Arrays.toString(parts));
}
}Pattern'ı İnceleme
pattern() özgün düzenli ifade dizesini, flags() ise etkin bayrakları bir int olarak döndürür.
import java.util.regex.Pattern;
public class Main {
public static void main(String[] args) {
Pattern p = Pattern.compile("[a-z]+", Pattern.CASE_INSENSITIVE);
System.out.println(p.pattern());
System.out.println(p.flags());
}
}Geçersiz Desenler Hata Fırlatır
Biçimi hatalı bir düzenli ifade, compile sırasında PatternSyntaxException fırlatır; böylece hataları erkenden yakalayabilirsiniz.
import java.util.regex.Pattern;
import java.util.regex.PatternSyntaxException;
public class Main {
public static void main(String[] args) {
try {
Pattern.compile("[unclosed");
} catch (PatternSyntaxException e) {
System.out.println("Invalid regex");
}
}
}Hızlı Kontrol
Sık kullanılan bir düzenli ifadeyi neden statik bir Pattern alanında derlemelisiniz?
Özet
Desenleri derlediniz:
Pattern.compileyeniden kullanılabilir, değişmez ve iş parçacığı güvenli bir desen oluşturur;matcherise onu bir girdiye bağlar.- Düzenli ifadelerdeki ters eğik çizgilerden Java kaynak kodunda
\\olarak kaçış yapın. CASE_INSENSITIVEveMULTILINEgibi bayraklar bitsel OR ile birleştirilir.Matcherdurum bilgisi taşır; bu nedenle her girdi için bir tane oluşturun.
Sıkça Sorulan Sorular
“Örüntüleri Derleme” dersi ücretsiz mi?
Evet — “Örüntüleri Derleme” 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.
“Örüntüleri Derleme” dersinde ne öğreneceğim?
Pattern.compile ve Matcher 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 1. dersidir.
“Örüntüleri Derleme” 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
- Örüntüleri Derleme
- Bulma ve Eşleştirme
- Yakalama Grupları
- Düzenli İfadelerle Değiştirme