java - 正则捕捉中(.*?)和(.*)的区别
伊谢尔伦
伊谢尔伦 2017-04-18 10:55:01
0
5
616

Java使用正则匹配捕捉
1 Pattern p = Pattern.compile("name="sign" value="(.*)"/>");
2 Pattern p = Pattern.compile("name="sign" value=*"(.?)**"/>");
第二个比第一个多了一个?号,请问其中区别是什么

伊谢尔伦
伊谢尔伦

小伙看你根骨奇佳,潜力无限,来学PHP伐。

membalas semua(5)
伊谢尔伦

Perbezaan antara tamak dan tidak tamak.

Ringkasnya, tidak tamak bermakna ia akan berhenti apabila sudah padan, tidak kira ada perlawanan lain nanti.

Peter_Zhu

Apabila ungkapan biasa mengandungi kelayakan yang menerima pengulangan, gelagat biasa ialah memadankan seberapa banyak aksara yang mungkin (sambil masih membenarkan keseluruhan ungkapan dipadankan). Ambil ungkapan ini sebagai contoh: a.*b, ia akan sepadan dengan rentetan terpanjang bermula dengan a dan berakhir dengan b. Jika anda menggunakannya untuk mencari aabab, ia akan sepadan dengan keseluruhan rentetan aabab. Ini dinamakan padanan tamak.
Kadangkala, kita memerlukan pemadanan yang malas, iaitu pemadanan sesedikit mungkin aksara. Kelayakan yang diberikan di atas boleh ditukar kepada corak padanan malas dengan menambahkan tanda soal ? Dengan cara ini, .*? bermaksud memadankan sebarang bilangan ulangan, tetapi menggunakan ulangan paling sedikit yang akan menjadikan perlawanan keseluruhan berjaya. Sekarang lihat versi malas contoh:
a.*?b sepadan dengan rentetan terpendek bermula dengan a dan berakhir dengan b. Jika anda menggunakannya pada aabab, ia akan sepadan dengan aab (aksara 1 hingga 3) dan ab (aksara 4 hingga 5).

Disalin daripada: http://deerchao.net/tutorials... 30 minit pengenalan kepada ungkapan biasa, bahagian yang tamak dan malas

洪涛

Yang pertama akan berhenti selepas mencari perlawanan, manakala yang kedua akan mencari semua sasaran yang sepadan.

小葫芦

Soalan ini melibatkan mod tamak dan mod malas (juga dipanggil mod tidak tamak) dalam ungkapan biasa
Pertama, mari kita lihat definisi kedua-dua ini

  1. Mod tamak, padanan maksimum*,+,'{n,}',.*semuanya tergolong dalam mod tamak Apa yang dipanggil padanan maksimum, izinkan saya memberi anda contoh

var pattern = /a.*e/
console.log("abcd fsdfsdfsesfdfsdfsesdfedfsdfses".match(pattern));        //结果为abcd fsdfsdfsesfdfsdfsesdfedfsdfse
  1. Mod malas, di bawah premis padanan yang berjaya, padankan sesedikit mungkin.
    Masih contoh di atas:

var pattern = /a.*?e/
console.log("abcd fsdfsdfsesfdfsdfsesdfedfsdfses".match(pattern));        //结果为abcd fsdfsdfse
刘奇

?Yang paling kecil padanan akan dipilih.

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan