Düzenli İfadelerle Değiştirme
replaceAll ve geri başvurular
Düzenli İfadelerle Değiştirme, CoddyKit'te ücretsiz bir Java Academy dersidir. Bu, 4 dersinin 4. 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 İfadeyle Değiştirme
Düzenli ifade yalnızca arama için kullanılmaz; metni dönüştürebilir. replaceAll, her eşleşmeyi bir değiştirme dizesiyle değiştirir.
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("a1b22c333");
System.out.println(m.replaceAll("#"));
}
}String.replaceAll Kısayolu
String.replaceAll(regex, replacement), deseni kendi içinde derleyen kullanışlı bir tek satırlık çözümdür.
public class Main {
public static void main(String[] args) {
String cleaned = "hello world again".replaceAll("\\s+", " ");
System.out.println(cleaned);
}
}replaceFirst
replaceFirst yalnızca ilk eşleşmeyi değiştirir ve sonraki eşleşmelere dokunmaz.
public class Main {
public static void main(String[] args) {
String s = "cat cat cat".replaceFirst("cat", "dog");
System.out.println(s);
}
}Değiştirmelerde Grup Başvuruları
Değiştirme dizesinde $1, $2 ve benzerleri, ilgili gruplar tarafından yakalanan metni ekler. Böylece eşleşen içeriği yeniden sıralayabilir veya yeniden biçimlendirebilirsiniz.
public class Main {
public static void main(String[] args) {
String iso = "30/05/2026".replaceAll("(\\d{2})/(\\d{2})/(\\d{4})", "$3-$2-$1");
System.out.println(iso);
}
}Adlandırılmış Grup Başvuruları
Değiştirmede adlandırılmış gruplara ${name} ile de başvurabilirsiniz.
public class Main {
public static void main(String[] args) {
String r = "alice@example.com"
.replaceAll("(?<user>\\w+)@(?<host>[\\w.]+)", "${user} at ${host}");
System.out.println(r);
}
}Dolar ve Ters Eğik Çizgiden Kaçış
$ ve \ değiştirmelerde özel anlam taşıdığı için, gerçek bir dolar işaretinden kaçmak amacıyla \$ kullanın. Matcher.quoteReplacement bu karakterler için sizin yerinize kaçış uygular.
import java.util.regex.Matcher;
public class Main {
public static void main(String[] args) {
String price = "100".replaceAll("\\d+", Matcher.quoteReplacement("$100"));
System.out.println(price);
}
}replaceAll İşleviyle Hesaplanan Değiştirmeler
Java 9'dan beri Matcher.replaceAll bir işlev kabul edebilir; böylece her değiştirmeyi eşleşmeden yola çıkarak hesaplayabilirsiniz.
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("a1 b2 c3");
String out = m.replaceAll(mr -> String.valueOf(Integer.parseInt(mr.group()) * 10));
System.out.println(out);
}
}Eşleşen Sözcükleri Büyük Harfe Dönüştürme
Değiştirme eşleşen metne bağlı olduğunda, örneğin her sözcüğü büyük harfe dönüştürürken, işlev biçimi özellikle kullanışlıdır.
import java.util.regex.Pattern;
import java.util.regex.Matcher;
public class Main {
public static void main(String[] args) {
Matcher m = Pattern.compile("\\b\\w").matcher("hello there world");
String title = m.replaceAll(mr -> mr.group().toUpperCase());
System.out.println(title);
}
}appendReplacement ve appendTail
Tam denetim için find ile döngü kurun ve çıktıyı önce appendReplacement, ardından appendTail aracılığıyla oluşturun. Bu, klasik düşük düzeyli tekniktir.
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("a1b2");
StringBuilder sb = new StringBuilder();
while (m.find()) {
m.appendReplacement(sb, "[" + m.group() + "]");
}
m.appendTail(sb);
System.out.println(sb);
}
}Desendeki Geri Başvurular
Desendeki geri başvurular (\1), yinelenen metinle eşleşir; bu, değiştirme sırasında iki kez yazılmış sözcükleri birleştirmek için kullanışlıdır.
public class Main {
public static void main(String[] args) {
String fixed = "the the end end".replaceAll("\\b(\\w+) \\1\\b", "$1");
System.out.println(fixed);
}
}İstenmeyen Karakterleri Kaldırma
Sık kullanılan bir yöntem, izin verilen kümenin dışındaki her şeyi boş dizeyle değiştirerek girdiyi temizlemektir.
public class Main {
public static void main(String[] args) {
String digits = "(555) 123-4567".replaceAll("[^0-9]", "");
System.out.println(digits);
}
}Hızlı Kontrol
replaceAll için bir değiştirme dizesinde $2 ne anlama gelir?
Özet
Metni düzenli ifadeyle dönüştürdünüz:
replaceAllvereplaceFirsteşleşmeleri değiştirir;Stringkısayollar sunar.$1/${name}, değiştirmelerde yakalanan grupları ekler; gerçek bir$karakterinden\$ile veyaquoteReplacementaracılığıyla kaçış yapın.replaceAllişlev biçimi, değiştirmeleri her eşleşmeden yola çıkarak hesaplar.appendReplacement+appendTail, tüm manuel denetimi sağlar.
Sıkça Sorulan Sorular
“Düzenli İfadelerle Değiştirme” dersi ücretsiz mi?
Evet — “Düzenli İfadelerle Değiştirme” 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.
“Düzenli İfadelerle Değiştirme” dersinde ne öğreneceğim?
replaceAll ve geri başvurular 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 4. dersidir.
“Düzenli İfadelerle Değiştirme” 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