Java Academy · Pelajaran

Mencari dan Memadankan

matches, find, lookingAt

Pelajaran 2 daripada 413 langkah

Mencari dan Memadankan ialah pelajaran Java Academy percuma di CoddyKit. Ini ialah pelajaran 2 daripada 4. Anda boleh membaca keseluruhan pelajaran di bawah secara percuma — kemudian berlatih secara praktikal dalam pelayar menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran Java Academy, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus Java Academy merangkumi sejumlah 4 pelajaran.

Tiga Cara Menggunakan Corak

Matcher menawarkan tiga ujian utama:

  • matches() memerlukan keseluruhan masukan sepadan.
  • lookingAt() memerlukan padanan pada permulaan.
  • find() mencari padanan di mana-mana tempat.
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("42");
        System.out.println(m.matches());
    }
}

matches: Keseluruhan Masukan

matches mengembalikan benar hanya jika seluruh rentetan mematuhi corak, seolah-olah corak itu mempunyai penambat pada kedua-dua hujung.

import java.util.regex.Pattern;

public class Main {
    public static void main(String[] args) {
        Pattern p = Pattern.compile("\\d+");
        System.out.println(p.matcher("123").matches());
        System.out.println(p.matcher("123abc").matches());
    }
}

lookingAt: Padanan pada Permulaan

lookingAt berjaya jika masukan bermula dengan padanan, walaupun bahagian selebihnya tidak sepadan.

import java.util.regex.Pattern;

public class Main {
    public static void main(String[] args) {
        Pattern p = Pattern.compile("\\d+");
        System.out.println(p.matcher("123abc").lookingAt());
        System.out.println(p.matcher("abc123").lookingAt());
    }
}

find: Padanan di Mana-mana Tempat

find mengimbas ke hadapan untuk mencari padanan seterusnya. Ia mengembalikan benar jika terdapat padanan dari kedudukan semasa dan seterusnya.

import java.util.regex.Pattern;

public class Main {
    public static void main(String[] args) {
        Pattern p = Pattern.compile("\\d+");
        System.out.println(p.matcher("abc123def").find());
    }
}

Mengulangi Semua Padanan dengan find

Memanggil find dalam gelung akan melangkah melalui setiap padanan dalam masukan.

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("a1bb22ccc333");
        while (m.find()) {
            System.out.println(m.group());
        }
    }
}

Kedudukan Padanan: start dan end

Selepas padanan berjaya, start() dan end() memberikan julat indeks, manakala group() memberikan teks yang sepadan.

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.group() + " at [" + m.start() + "," + m.end() + ")");
        }
    }
}

Penambat dengan find

Penambat ^ dan $ membolehkan find bertindak seperti semakan permulaan atau penghujung. Di sini ^\d+ hanya sepadan dengan digit pada permulaan mutlak.

import java.util.regex.Pattern;

public class Main {
    public static void main(String[] args) {
        Pattern p = Pattern.compile("^\\d+");
        System.out.println(p.matcher("123abc").find());
        System.out.println(p.matcher("abc123").find());
    }
}

Menetapkan Semula Pemadan

reset() mengundurkan pemadan ke permulaan supaya anda boleh mengimbas masukan yang sama sekali lagi.

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

public class Main {
    public static void main(String[] args) {
        Matcher m = Pattern.compile("a").matcher("aaa");
        int first = 0;
        while (m.find()) first++;
        m.reset();
        int second = 0;
        while (m.find()) second++;
        System.out.println(first + " " + second);
    }
}

Menggunakan Semula Pemadan pada Masukan Baharu

reset(newInput) menggunakan semula objek pemadan yang sama dengan rentetan berbeza, sekali gus mengelakkan peruntukan baharu.

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("abc");
        m.reset("xyz789");
        System.out.println(m.find());
        System.out.println(m.group());
    }
}

Ringkasan matches berbanding find

Pilih berdasarkan tujuan: gunakan matches untuk mengesahkan nilai penuh (seperti keseluruhan ID), dan find untuk mengekstrak atau mencari bahagian dalam teks yang lebih besar.

import java.util.regex.Pattern;

public class Main {
    public static void main(String[] args) {
        Pattern id = Pattern.compile("[A-Z]{2}\\d{4}");
        System.out.println(id.matcher("AB1234").matches());
        System.out.println(id.matcher("id=AB1234;").find());
    }
}

Mengira Padanan

Tugas lazim ialah mengira kejadian. Ulangi find dalam gelung dan naikkan pembilang.

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

public class Main {
    public static void main(String[] args) {
        Matcher m = Pattern.compile("o").matcher("foo boo zoo");
        int count = 0;
        while (m.find()) count++;
        System.out.println(count);
    }
}

Semakan Pantas

Kaedah manakah yang memerlukan keseluruhan rentetan masukan sepadan dengan corak?

Ulang Kaji

Anda telah mencari padanan:

  • matches menguji keseluruhan masukan; lookingAt menguji permulaan; find mencari di mana-mana tempat.
  • Ulangi find untuk melangkah melalui semua padanan dan membaca group, start, end.
  • reset mengundurkan pemadan, manakala reset(input) menggunakan semula pemadan pada teks baharu.
Percuma untuk bermula

Pelajari Java dengan tutor kecerdasan buatan — percuma

Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.

Kursus
104
Pelajaran
374

Soalan Lazim

Adakah pelajaran “Mencari dan Memadankan” percuma?

Ya — teks penuh “Mencari dan Memadankan” boleh dibaca secara percuma di web ini. Untuk berlatih secara interaktif menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7, serta membuka kunci baki kursus Java Academy, tingkat taraf kepada CoddyKit PRO. Kursus Java Academy merangkumi sejumlah 4 pelajaran.

Apakah yang akan saya pelajari dalam “Mencari dan Memadankan”?

matches, find, lookingAt Anda berlatih Java Academy menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.

Adakah saya memerlukan pengalaman untuk memulakan Java Academy?

Tiada pengalaman terdahulu diperlukan. Pembelajaran Java Academy di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 2 daripada 4.

Berapa lamakah pelajaran “Mencari dan Memadankan” diambil?

Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.

Bolehkah saya menulis dan menjalankan kod dalam pelajaran Java Academy ini?

Ya. Setiap pelajaran Java Academy menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.

Semua pelajaran dalam kursus ini

  1. Menyusun Corak
  2. Mencari dan Memadankan
  3. Kumpulan Tangkapan
  4. Penggantian dengan Regex
← Kembali ke Java Academy