Kumpulan Ungkapan Biasa dalam C#
Dalam C#, ungkapan biasa menyediakan alatan berkuasa untuk pemprosesan teks. Memahami cara kumpulan berfungsi dalam ungkapan ini adalah penting untuk mengekstrak maklumat tertentu. Mari kita terokai cara kumpulan ungkapan biasa digunakan dan menghuraikan gelagat mereka dalam senario tertentu.
Pertimbangkan ungkapan biasa berikut dan rentetan input sampel:
var pattern = @"\[(.*?)\]"; var user = "Josh Smith [jsmith]";
Ungkapan [(.*? )] sepadan dengan teks yang bermula dengan kurungan segi empat sama pembukaan, diikuti dengan padanan tidak tamak mana-mana aksara dalam kurungan segi empat sama dan berakhir dengan kurungan empat segi penutup.
Apabila menggunakan Regex.Padan dengan input di atas, kami memperoleh keputusan berikut:
matches.Count == 1 matches[0].Value == "[jsmith]"
Ini masuk akal, kerana ungkapan biasa sepadan dengan subrentetan "[jsmith]". Walau bagaimanapun, ia patut menyelami koleksi Kumpulan:
matches[0].Groups.Count == 2 matches[0].Groups[0].Value == "[jsmith]" matches[0].Groups[1].Value == "jsmith"
Di sini, Kumpulan[0] mewakili keseluruhan perlawanan, termasuk kurungan segi empat sama. Kumpulan[1] mengandungi teks dalam kurungan segi empat sama, iaitu "jsmith" dalam kes ini. Ungkapan biasa termasuk kumpulan penangkap yang dikenal pasti oleh (.*?) yang menangkap aksara dalam kurungan segi empat sama. Ini menerangkan sebab Kumpulan[1] mengembalikan "jsmith".
Adalah penting untuk ambil perhatian bahawa bilangan kumpulan dalam koleksi Kumpulan bergantung pada ungkapan biasa itu sendiri. Dalam contoh di atas, hanya terdapat satu kumpulan penangkap, jadi Kumpulan mempunyai dua elemen: keseluruhan perlawanan dan kumpulan pertama yang ditangkap.
Untuk menggambarkan lagi konsep ini, pertimbangkan contoh yang lebih kompleks:
var pattern = @"\[(.*?)\](.*)"; var match = Regex.Match("ignored [john] John Johnson", pattern);
Dalam senario ini, ungkapan biasa sepadan dengan teks yang dilampirkan dalam kurungan segi empat sama diikuti dengan mana-mana teks lain. Berikut ialah pecahan koleksi Kumpulan:
match.Value == "[john] John Johnson" match.Groups[0].Value == "[john] John Johnson" match.Groups[1].Value == "[john]" match.Groups[2].Value == "John Johnson"
Seperti yang anda lihat, Kumpulan[1] menangkap teks dalam set pertama kurungan segi empat sama, manakala Kumpulan[2] menangkap teks selepas kurungan. Kumpulan penangkap paling dalam juga boleh mempunyai koleksi Tangkapan mereka sendiri. Dengan memahami mekanik kumpulan ungkapan biasa, pembangun boleh mengekstrak maklumat khusus secara berkesan daripada rentetan teks menggunakan corak padanan yang berkuasa ini.
Atas ialah kandungan terperinci Bagaimanakah cara saya mengekstrak maklumat khusus daripada rentetan teks menggunakan kumpulan ungkapan biasa dalam C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!