Mode serakah:
Indikator kuantitas default ke mode keserakahan kecuali ditunjukkan sebaliknya. Ekspresi pola serakah akan terus cocok sampai mereka tidak bisa. Jika Anda menemukan bahwa hasil pencocokan ekspresi tidak cocok dengan yang diharapkan, sangat mungkin karena - Anda pikir ekspresi hanya akan cocok dengan beberapa karakter pertama, tetapi sebenarnya itu adalah pola serakah, sehingga akan terus cocok.
Keserakahan dan non-hijau, plus? non-hijau:
var s = '1023000'.match (/(/d+) (0*)/); s ["1023000", "1023000", ""] var s =' 1023000'.match (/^(/d+) (0*) $/); s ["1023000", "1023000", "" "] $/); '1023000'.match (/^(/d+?) (0*) $/); s ["10", "1", "0"]
Ekspresi reguler Java menggunakan pola pencocokan serakah serakah secara default. Ini adalah kecocokan terpanjang dari jenis ini (.*). Jika pertandingan terpendek diperlukan, itu akan diubah menjadi (.*?) Yaitu, itu adalah pola yang hampir tidak cocok.
Analisis Prinsip:
Jika itu adalah pola pencocokan serakah, mesin ekspresi reguler akan cocok sampai akhir string. Ketika pertandingan salah, itu akan mundur dan menemukan posisi pencocokan terakhir untuk mengembalikan hasil pencocokan. Jika itu adalah pola yang nyaris tidak cocok, mesin ekspresi reguler akan cocok dengan karakter di akhir pola, dan kemudian mengambil langkah mundur, menemukan bahwa kecocokan itu salah, dan kemudian melacak kembali ke posisi di mana pertandingan terbaru yang ditemukan di fallback benar, mengembalikan hasilnya.
Lihat kodenya:
Contoh 1:
public void test51 () {string str = "aaa/" bbb/"ccc/" dd/"eee"; System.out.println (str); str = str.replaceall ("/"(.*)/" ","@"); System.out.println (str); } Keluaran:
AAA "BB" CC "DDD" EEEAAA@EEE
Contoh 2:
@Test public void test52 () {string str = "aaa/" bbb/"ccc/" dd/"eee"; System.out.println (str); str = str.replaceall ("/"(.*?)/" ","@"); System.out.println (str); } Keluaran:
AAA "BB" CC "DDD" EEEAAA@CCC@EEE