Bagaimanakah Kumpulan Ekspresi Biasa Berfungsi dalam C#?

Patricia Arquette
Lepaskan: 2024-10-29 12:28:02
asal
296 orang telah melayarinya

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

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

matches.Count == 1
matches[0].Value == "[jsmith]"
Salin selepas log masuk

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

matches[0].Groups[0].Value == "[jsmith]"
matches[0].Groups[1].Value == "jsmith"
Salin selepas log masuk

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

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