Rumah > pembangunan bahagian belakang > C++ > Apakah Perbezaan Antara `perlawanan[0].Nilai` dan `padanan[0].Kumpulan[1].Nilai` dalam Ungkapan Biasa C#?

Apakah Perbezaan Antara `perlawanan[0].Nilai` dan `padanan[0].Kumpulan[1].Nilai` dalam Ungkapan Biasa C#?

DDD
Lepaskan: 2024-11-03 04:15:03
asal
339 orang telah melayarinya

What's the Difference Between `matches[0].Value` and `matches[0].Groups[1].Value` in C# Regular Expressions?

Memahami Kumpulan Ungkapan Biasa dalam C

Pengenalan:
Ekspresi biasa memainkan peranan penting dalam pelbagai aplikasi pengaturcaraan, termasuk pengekstrakan data dan manipulasi teks. Memahami cara menggunakan kumpulan ekspresi biasa adalah penting untuk memanfaatkan potensi penuh mereka dalam C#.

Memahami Masalah:
Seorang pembangun mewarisi blok kod yang melakukan pemadanan ungkapan biasa dan bingung dengan hasil yang diperoleh untuk corak regex:

var pattern = @"\[(.*?)\]";
Salin selepas log masuk

Untuk input pengguna "Josh Smith [jsmith]", hasilnya kelihatan mudah:

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

Walau bagaimanapun, pembangun berasa hairan dengan keputusan tambahan:

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

Menjawab Soalan:

1. Mengapakah "jsmith" sepadan dengan padanan[0].Kumpulan[1].Nilai?
Corak ungkapan biasa mengandungi satu kumpulan penangkapan, yang diwakili oleh (.*?). Kumpulan penangkap ini sepadan dengan semua aksara antara kurungan segi empat pembukaan dan penutup. Dalam kes ini, ia menangkap "jsmith."

2. Berapa banyak kumpulan akan sepadan[0].Kumpulan sentiasa menyimpan?
Koleksi Kumpulan biasanya menyimpan dua kumpulan: keseluruhan perlawanan dan perlawanan terakhir. Walau bagaimanapun, bilangan kumpulan boleh berbeza-beza berdasarkan kumpulan penangkapan yang dinyatakan dalam corak ungkapan biasa.

Penjelasan Tambahan:

  • padanan.Kumpulan [0] sentiasa mewakili keseluruhan perlawanan, tanpa mengira bilangan kumpulan yang menawan.
  • perlawanan.Kumpulan[1] mewakili kumpulan penangkapan yang sepadan dengan kejadian pertama (. *?).
  • match.Groups[1].Captures ialah koleksi objek Capture, yang mengandungi tangkapan individu dalam kumpulan.

Contoh:
Pertimbangkan corak yang lebih kompleks:

var pattern = @"\[(.*?)\](.*)";
Salin selepas log masuk

Untuk input "diabaikan [john] John Johnson":

  • padanan.Kumpulan [0].Nilai ialah "[john] John Johnson".
  • padanan.Kumpulan[1].Nilai ialah "john".
  • match.Groups[2].Nilai ialah " John Johnson".

Atas ialah kandungan terperinci Apakah Perbezaan Antara `perlawanan[0].Nilai` dan `padanan[0].Kumpulan[1].Nilai` dalam Ungkapan Biasa C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan