Bagaimanakah cara saya mengekstrak maklumat khusus daripada rentetan teks menggunakan kumpulan ungkapan biasa dalam C#?

Susan Sarandon
Lepaskan: 2024-10-30 19:28:30
asal
442 orang telah melayarinya

How do I extract specific information from a text string using regular expression groups in C#?

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]";
Salin selepas log masuk

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]"
Salin selepas log masuk

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"
Salin selepas log masuk

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);
Salin selepas log masuk

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"
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!