Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimanakah Kumpulan Ekspresi Biasa Berfungsi dalam C#?

Bagaimanakah Kumpulan Ekspresi Biasa Berfungsi dalam C#?

Patricia Arquette
Patricia Arquetteasal
2024-10-29 12:28:02259semak imbas

How do Regular Expression Groups Work in C#?

Kumpulan Ungkapan Biasa dalam C#

Dalam blok kod berikut, regex yang disediakan mengekstrak kandungan dalam kurungan segi empat sama:

var pattern = @"\[(.*?)\]";
var matches = Regex.Matches(user, pattern);

Dengan pengguna input == "Josh Smith [jsmith]":

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

Walau bagaimanapun, padankan[0].Kumpulan. Kira == 2, dengan:

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

Memahami Koleksi Kumpulan

  • padanan.Kumpulan[0] sentiasa mengandungi keseluruhan perlawanan, sama dengan padanan.Nilai.
  • padanan.Kumpulan[1 ] menangkap kumpulan pertama dalam ungkapan biasa.

Dalam kes ini:

  • corak ditakrifkan sebagai @"[(.*?)]", di mana (. *?) ialah kumpulan penangkap.
  • Regexp sepadan dengan keseluruhan rentetan kurungan yang disertakan serta kandungan dalam kurungan.

Oleh itu, padankan.Kumpulan[1]. Nilai mendapatkan semula kandungan dalam kurungan, "jsmith".

Bilangan Kumpulan dalam Perlawanan

Peraturan berikut mengawal bilangan kumpulan dalam perlawanan:

  • Setiap perlawanan mempunyai satu kumpulan pada indeks 0, yang sentiasa merupakan keseluruhan perlawanan.
  • Bilangan kumpulan tambahan bergantung pada kumpulan penangkapan yang ditakrifkan dalam ungkapan biasa.
  • Jika tiada kumpulan penangkap ditentukan, perlawanan akan mempunyai satu kumpulan sahaja.

Dalam contoh yang disediakan, memandangkan corak mengandungi satu kumpulan penangkapan, padanan.Kumpulan. Kiraan akan sentiasa 2. Walau bagaimanapun, ungkapan biasa yang lebih kompleks dengan berbilang kumpulan penangkapan akan menghasilkan lebih banyak kumpulan.

Contoh Tambahan

Pertimbangkan corak dan padanan berikut:

var pattern = @"\[(.*?)\](.*)";
var match = Regex.Match("ignored [john] John Johnson", pattern);
  • padanan.Nilai ialah "[john] John Johnson".
  • padanan.Kumpulan[0] ialah "[john] John Johnson".
  • padanan.Kumpulan[1 ] ialah [john].
  • perlawanan.Kumpulan[2] ialah John Johnson.

Dalam corak yang lebih kompleks:

var pattern = @"(\[.*?\])+";
var match = Regex.Match("[john][johnny]", pattern);
  • perlawanan .Nilai ialah "[john][johnny]".
  • padanan.Kumpulan[0] ialah "[john][johnny]".
  • padanan.Kumpulan[1] ialah [john] [johnny].
  • match.Groups[1].Captures[0] is [john].
  • match.Groups[1].Captures[1] is [johnny].

Memahami konsep ini adalah penting untuk memanfaatkan kuasa kumpulan ekspresi biasa dalam C#.

Atas ialah kandungan terperinci Bagaimanakah Kumpulan Ekspresi Biasa Berfungsi dalam C#?. 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