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. Öncelikle, bunların nasıl kullanılacağını anlayalım:
Pattern.compile() kullanarak bir pattern oluşturun:
Pattern pattern = Pattern.compile("cat");
// "cat" bulmak için bir desen oluştururMetniniz için bir matcher oluşturun:
String text = "The cat and dog";
Matcher matcher = pattern.matcher(text);
// Metin için bir matcher oluştururArtık 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ı şöyledir: Found at: 4
Metotları anlama:
matcher.find()- Metinde kalıbın bir sonraki oluşumunu arar- Bir eşleşme bulunursa
truedöndürür - Başka eşleşme yoksa
falsedöndürür - Bu nedenle tüm oluşumları bulmak için bunu bir
whiledöngüsünde kullanırız
- Bir eşleşme bulunursa
matcher.start()-find()tarafından bulunan son eşleşmenin başlangıç indeksini (konumunu) döndürür- Örneğimizde, "cat", "The cat and dog" içinde 4. indekste başlar
- Başarılı bir
find()çağrısından sonra çağrılmalıdır
Birden fazla eşleşme içeren örnek:
Pattern pattern = Pattern.compile("cat");
Matcher matcher = pattern.matcher("cat and cat");
while (matcher.find()) {
System.out.println("Found at: " + matcher.start());
}
// Çıktı:
// Bulundu: 0
// Bulundu: 8Görev
KolayfindWords adlı ve iki bağımsız değişken alan bir yöntem oluşturun:
- İçinde arama yapılacak bir String (
text) - Bulunacak bir String (
word)
Yöntem şunları yapmalıdır:
- Kelimenin tüm oluşumlarını bulmak için Pattern ve Matcher kullanın
- Kelimenin bulunduğu konumları içeren bir dize döndürün
- Konumlar boşluklarla ayrılmalıdır
Döndürülecek mesajlar şöyle olmalıdır:
- Herhangi bir girdi null ise: "Invalid input" döndürün
- Kelime bulunamazsa: "Not found" döndürün
- Bulunursa: konumları döndürün (ör. "4 10 15")
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) {
// Kodunuzu buraya 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 İşlemeKendi başına pratik yap: Online Java derleyicisi
Bir kalıbı kendi metninde dene: Regex Test Aracı