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
291 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!

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