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
truedöndürür - Başka eşleşme yoksa
falsedöndürür - Bu yüzden onu bir
whiledöngüsünde kullanıyoruz - tüm oluşumları bulmak için
- Eşleşme bulunursa
<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: 8Görev
KolayfindWords adında iki argüman alan bir metot oluşturun:
- Aranacak String (
text) - Bulunacak String (
word)
Metot şu işlemleri yapmalı:
- Kelimenin tüm tekrarlarını bulmak için Pattern ve Matcher kullanın
- Kelimenin bulunduğu pozisyonları içeren bir string döndürün
- 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 textmatcher.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 yoksafalsedöndürür - Tüm eşleşmeleri bulmak için döngüde kullanın
- Bulunursa
<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
- Başarılı bir
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));
}
}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
1Çok Boyutlu Diziler
2D Diziler Temelleri2D Dizi Elemanlarına Erişim2D Dizilerle İç İçe DöngülerÖzet - 2D DizilerMatris Toplama ve ÇıkarmaJagged Diziler3D Diziler ve ÖtesiYaygın 2D Dizi DesenleriÖzet - Diziler Hakkında Her Şey2HashMap Bölüm 1
HashMap Nedir?HashMap TanımlamaDeğerlere ErişimAnahtarın Varlığını Kontrol EtmeSözlükleri DeğiştirmeÖzet - HashMap5HashSet Kısım 2
Matematik - HashSet'lerin BirliğiMatematik - HashSet KesişimiMatematik - Küme FarkıMatematik - Simetrik FarkAlt Kümeler ve Üst KümelerKümeler Üzerinde Yineleme8Gelişmiş Dize İşlemleri
StringBuilder TemelleriStringBuffer'e GirişDüzenli İfadeler TemelleriRegex ile Desen EşleştirmeDize AyrıştırıcısıGelişmiş Dize Biçimlendirme3HashMap Bölüm 2
HashMap YöntemlerikeySet() ile YinelemeentrySet() ile Yinelemeİç İçe HashMapÖzet - Depo YönetimiÖzet - HashMap İşlemleri6İleri Akış Kontrolü
Etiketli İfadelerSwitch İfadesiDesen EşleştirmeKoruyucu Yan CümlelerÖzet - Akış Kontrolü9Proje - Benzersiz Kelime Sayacı
Metin Girişi ve DepolamaKelime İşleme