Artikel ini menjelaskan fungsi dan penggunaan tampilan surround dan referensi yang teratur di Java. Bagikan untuk referensi Anda, sebagai berikut:
Di sekitar pandangan
1. Di sekitar konsep
Melihat sekeliling, juga dikenal sebagai pernyataan nol lebar, pernyataan disingkat.
Tampilan surround menekankan posisi (depan atau belakang), dan ekspresi pandangan surround harus dicocokkan agar berhasil.
Tontonan surround dapat dianggap sebagai kondisi penilaian tambahan untuk penambahan virtual ke lokasinya dan tidak mengkonsumsi karakter yang cocok secara teratur.
2. Melihat Sekitar Ekspresi Dasar
(? = Ekspresi) Urutan positif dan ekspresi dapat dicocokkan di sisi kanan lokasi.
(?! Ekspresi) Urutan negasi dari tampilan sekitarnya berarti bahwa sisi kanan lokasi tidak dapat cocok dengan ekspresi
(? <= Ekspresi) urutan terbalik secara positif melihat sekeliling, menunjukkan bahwa sisi kiri posisi dapat cocok dengan ekspresi
(? <! Ekspresi) Urutan terbalik meniadakan tampilan di sekitarnya, menunjukkan bahwa sisi kiri posisi tidak cocok dengan ekspresi
Catatan: Sisi kanan orde (=) cocok, dan tampilan surround urutan terbalik memiliki lebih banyak <daripada tampilan surround berurutan.
JavaScript hanya mendukung tampilan surround berurutan, tetapi tidak mendukung tontonan surround terbalik.
Meskipun tampilan surround berurutan dan tampilan surround urutan terbalik didukung di Java, tampilan surround urutan terbalik hanya mendukung ekspresi dengan penentuan panjang. Dalam tampilan surround urutan terbalik, hanya dukungan kuantifikasi? dan jangan mendukung kuantifikasi lain dengan panjang yang tidak pasti.
3. Gunakan contoh
3.1. Afirmasi urutan dan melihat -lihat (? = Ekspresi)
3.1.1. Cocokkan nama file tanpa sufiks dengan akhir akhiran ".txt"
【.+(? =/. Txt)】
teks:
txtfile.txt
exefile.exe
inifile.ini
Hasil Cocokkan: TxtFile
3.1.2. Kata sandi cocok (harus berisi huruf (case tidak sensitif), angka, 6-16 digit)
【^(? =.*? [A-za-z]) (? =.*? [0-9]) [a-za-z0-9] {6,16} $】
(? =.*? [a-za-z]) mendefinisikan setidaknya satu huruf dalam karakter berikut, menggunakan (? =.*? [0-9]) untuk mendefinisikan setidaknya satu angka dalam karakter berikut, dan akhirnya mendefinisikan kuantifikasi dengan benar-benar mencocokkan [A-ZA-ZA-Z0-9] {6,16} secara reguler.
3.2. Urutan negasi pandangan surround (?! Ekspresi)
3.2.1. Tag cocok selain <a> </a>
【<(?!/? A/b) [^<]+?>】
Teks: <a> <a1> </a> zxiaofan <vov> com </d> iv> cc
Hasil Pencocokan:
<a1>
<div>
</d>
3.2.2. Cocokkan nama file dengan akhiran yang tidak ".txt" di akhir akhiran
【.+ (?!/. Txt)】 kesalahan ekspresi karena.+ Tidak memiliki posisi yang ditentukan dan merupakan kecocokan serakah. (Jadi.+ dapat langsung mencocokkan txtfile.txt)
【(.+) (?!/. Txt)/. [^.]+$】
teks:
txtfile.txt
exefile.exe
inifile.ini
Hasil Pencocokan:
exefile.exe
inifile.ini
3.3. Afirmasi urutan terbalik di sekitar (? <= Ekspresi)
3.3.1. Cocokkan konten antara tag yang ditentukan
【(? <= <div>) [^<]+(? = </Div>)】
Teks: <verv> zxiaofan.com </div>
Hasil pencocokan: zxiaofan.com
3.3.2. Dapatkan nilai parameter yang ditentukan
【(? <= Name =).+】
teks:
Nama = Zxiaofan
Usia = 20
Level = 6
Hasil Pencocokan: Zxiaofan
3.4. Negasi urutan terbalik dari pandangan surround (? <!
3.4.1. Dapatkan nilai parameter yang tidak ditentukan
【^[^=#]+= (? <! Name =).+$】
teks:
Nama = Zxiaofan
Usia = 20
Level = 6
#seks = 1
Hasil Pencocokan:
Usia = 20
Level = 6
4. Contoh komprehensif
4.1. Harus berisi huruf, angka, dan karakter khusus
【^(? =.*? [A-za-z]) (? =.*?/D) (?! [a-za-z/d]+$).+$】
Penjelasan: ^(? =.*? [A-za-z]) batas harus memiliki huruf; (? =.*?/D) batas harus memiliki angka; (?! [A-ZA-Z/D]+$) Batas tidak dapat semua angka dan huruf.
4.2. Cocokkan nama domain utama (cocokkan nama domain tingkat atas)
【(? <= (? :: /// w {0,50}/.)?) (?:/w {0,50}/.) (?: com/.cn | net/.cn | org/.cn | com | net | org | cn | biz | info | cc | tv)】
teks:
vip.zxiaofan.com.cn
http://zxiaofan.com/123
www.zxiaofan.org.cn
Hasil Pencocokan:
zxiaofan.com.cn
zxiaofan.com
zxiaofan.org.cn
Catatan: [?:] Jangan menangkap teks yang cocok untuk grup yang dinamai secara otomatis, mereka juga tidak menetapkan grup ke grup ini. (Itu tidak akan mempengaruhi hasil setelah penghapusan)
Nama Domain Khusus: Wanwang www.net.cn
4.3. Cocokkan 5 nomor ponsel berturut -turut
【1 [34578]/d {3} (/d) (?!/1 {1}) (/d)/2 {4}】
teks:
18328501111
183285111111
18328551111
183281111111
Hasil Pencocokan:
183285111111
Note1:/1 cocok dengan set konten pertama
Note2: (?!/1 {1}) filter 6 angka berturut -turut
Referensi
1. Konsep Backreference
Kelompok penangkapan: Bagilah menjadi beberapa kelompok sesuai dengan () Subekspresi; Setiap pasangan () muncul adalah kelompok penangkapan; Mesin akan menghitung kelompok penangkapan, dan aturan penomoran adalah braket kiri (urutan kejadian dari kiri ke kanan, mulai dari 1.
Penamaan kelompok penangkapan:
(? <name> exp) cocokkan exp dan tangkap teks ke dalam nama grup bernama, yang juga bisa ditulis sebagai (? 'name'exp);
(?: exp) pencocokan exp, tidak menangkap teks yang cocok dengan grup yang dinamai secara otomatis, juga tidak menetapkan nomor grup ke grup ini.
Backreference:
/1 berarti kelompok pertama (ABC); /2 berarti kelompok kedua;
/K <Word>: mengacu pada grup dengan nama yang ditentukan.
2. Gunakan contoh
2.1. Cocokkan nama file dengan awal dan akhir yang sama
【([Az] {3}) [az]+/./1 {1}】
teks:
txtfile.txt
exefile.txt
fileini.ini
Hasil Pencocokan:
txtfile.txt
Catatan: ([az] {3}) adalah grup pertama, dan /1 {1} berarti mengacu pada grup pertama sekali (tidak dapat ditulis sebagai /1 {3} di sini).
PS: Berikut adalah dua alat ekspresi reguler yang sangat nyaman untuk referensi Anda:
Alat Pengujian Online JavaScript Reguler:
http://tools.vevb.com/regex/javascript
Alat pembuatan online ekspresi reguler:
http://tools.vevb.com/regex/create_reg
Untuk informasi lebih lanjut tentang algoritma Java, pembaca yang tertarik dengan situs ini dapat melihat topik: "Keterampilan Ekspresi Reguler Java", "Tutorial Struktur Data Java dan Algoritma", "Java Operation Dom Node Skills", "Java File dan Ringkasan Keterampilan Operasi Direktori" dan "Java Cache Skills Ringkasan Keterampilan Operasi Cache" Ringkasan Keterampilan Operasi Java "Ringkasan Keterampilan Operasi Java"
Saya harap artikel ini akan membantu pemrograman Java semua orang.