Artikel ini menjelaskan karakter Cina dalam tag yang cocok secara reguler di Java. Bagikan untuk referensi Anda, sebagai berikut:
Hari ini seorang teman dalam grup mengajukan pertanyaan tentang ekspresi reguler, yang berisi konten berikut:
<a href = 'www.baidu.comds = id32434#comment'rewr> Special432 </a> 453543 <a guhll ,, l> a1special123 apakah Anda? </a> <a href = id = 32434#comment'ewrer> khusus 2 </a> <a> teks 2 </a> <a> teks </a>
Sekarang Anda ingin mencocokkan karakter Cina dalam tag <a> yang kontennya berisi bahasa Cina tetapi atribut yang tidak mengandung komentar.
Solusinya adalah sebagai berikut:
1. Pertandingan pertama tag <a> yang tidak termasuk komentar;
2. Buat kecocokan kuadratik dalam hasil pencocokan untuk menghasilkan Cina;
Kodenya adalah sebagai berikut:
Paket com.mmq.regex; import java.util.regex.matcher; impor java.util.regex.pattern;/** * @use cocok dengan karakter Cina dalam tag <a> tag html * @projectname * @author mumaoqiang * @fullname com.regectname * @Version 1.0 */public class MatchChineseCharacters { /** * Based on the input, match the Chinese characters in the <a> tag that contains Chinese but does not contain comment* @param source Content to match* @return Chinese characters in <a> tag*/ public static String matchChineseCharacters(String source) { //Match the <a> tag that contains Chinese but does not contain comment String reg = "<a ((?! Komentar).)*?> ([^<>]*? [// u4e00-// u9fa5]+[^<>]*?)+(? = </a>)"; Pola pola = pola.compile (reg); Pencocokan pencocokan = pola.matcher (sumber); StringBuilder karakter = stringBuilder baru (); while (matcher.find ()) {string result = matcher.group (); System.out.println (hasil); // buat hasil regularisasi kuadratik dan cocokkan string karakter Cina reg1 = "[// u4e00-// u9fa5]+"; Pola p1 = pola.compile (reg1); Pencocokan m1 = p1.matcher (hasil); while (m1.find ()) {karakter.append (m1.group ()); } //System.out.println (karakter.toString ()); } return character.toString (); } public static void main (string [] args) {string result = matchchineseCharacters ("<a href = 'www.baidu.comds = id32434#comment'rewr> Special432 </a> 453543 <a guHll ,, l> a1special123hello123? href = id = 32434#Comment'Ewrer> Special2 </a> <a> text2 </a> <a> teks </a> "); System.out.println (hasil); }}Hasil output adalah sebagai berikut:
<a guhll ,, l> a1special123 halo 123? <a> teks di tag, apa kabar?
Ini penjelasan:
String reg = "<a ((?! komentar).)*?> ([^<>]*? [// u4e00-// u9fa5]+[^<>]*?)+(? = </a>)";
Konten yang cocok ini berisi Cina tetapi atribut tag tidak berisi komentar. Pencarian mundur? <= Tidak dapat digunakan, karena pencarian mundur hanya bisa berupa konten panjang tetap. Atribut dalam tag tidak pasti, sehingga tidak dapat digunakan; [// u4e00-// u9fa5]+ cocok dengan string Cina; while (? = </a>) menggunakan pencarian ke depan? =, dan tag akhir tidak akan dimasukkan dalam hasilnya.
Masalah ini terpecahkan. Jika Anda ingin mencocokkan konten yang ditentukan dalam tag yang ditentukan, itu juga mudah ditingkatkan. Jika ada aturan yang lebih baik, silakan tinggalkan pesan untuk dipelajari dari satu sama lain.
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
Saya harap artikel ini akan membantu pemrograman Java semua orang.