Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimanakah Kumpulan Ungkapan Biasa dalam C# Menangkap dan Mengakses Subrentetan Dipadankan?

Bagaimanakah Kumpulan Ungkapan Biasa dalam C# Menangkap dan Mengakses Subrentetan Dipadankan?

DDD
DDDasal
2024-10-29 18:48:57981semak imbas

How do Regular Expression Groups in C# Capture and Access Matched Substrings?

Kumpulan Ungkapan Biasa dalam C#: Memahami Keputusan Padanan

Pertimbangkan blok kod C# berikut:

<code class="csharp">var pattern = @"\[(.*?)\]";
var matches = Regex.Matches(user, pattern);
if (matches.Count > 0 && matches[0].Groups.Count > 1)
    ...</code>

Ini kod menggunakan ungkapan biasa untuk mengekstrak teks kurungan daripada rentetan input pengguna. Untuk input "Josh Smith [jsmith]", kod tersebut mengembalikan hasil berikut dengan betul:

matches.Count == 1
matches[0].Value == "[jsmith]"

Walau bagaimanapun, baris berikutnya menimbulkan persoalan:

matches[0].Groups.Count == 2
matches[0].Groups[0].Value == "[jsmith]"
matches[0].Groups[1].Value == "jsmith"

Pengumpulan Padanan

Dalam ungkapan biasa, kumpulan digunakan untuk menangkap bahagian tertentu pada perlawanan. Secara lalai, keseluruhan perlawanan ditangkap dalam Kumpulan 0. Kumpulan penangkapan tambahan boleh ditakrifkan menggunakan kurungan.

Dalam kod yang disediakan, ungkapan biasa mentakrifkan satu kumpulan penangkapan, dilambangkan dengan (.*?). Kumpulan ini menangkap teks dalam kurungan segi empat sama (jsmith dalam kes ini). Oleh itu:

  • perlawanan[0].Kumpulan[0] mengandungi keseluruhan padanan, termasuk kurungan segi empat sama: [jsmith]
  • perlawanan[0].Kumpulan[1] mengandungi teks yang ditangkap dalam kurungan: jsmith

Kumpulan Bersarang

Dalam ungkapan biasa yang lebih kompleks, adalah mungkin untuk mempunyai kumpulan bersarang. Dalam kes ini, setiap kumpulan mengandungi set tangkapan sendiri. Walau bagaimanapun, dalam kod yang diberikan, hanya terdapat satu tahap pengelompokan, jadi:

  • padanan[0].Kumpulan[1].Tangkapan sentiasa kosong.

Pertimbangan Tambahan

  • Kumpulan 0: Adalah penting untuk ambil perhatian bahawa Kumpulan 0 sentiasa mengandungi keseluruhan perlawanan, tidak kira sama ada mana-mana kumpulan penangkap ditakrifkan.
  • Bilangan Kumpulan: Bilangan kumpulan dalam padanan ungkapan biasa bergantung pada bilangan kumpulan penangkap yang ditakrifkan dalam corak. Dalam contoh yang diberikan, hanya terdapat satu kumpulan penangkap, menghasilkan dua kumpulan.

Atas ialah kandungan terperinci Bagaimanakah Kumpulan Ungkapan Biasa dalam C# Menangkap dan Mengakses Subrentetan Dipadankan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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