Bagikan melalui


Metode System.Text.RegularExpressions.Regex.Match

Artikel ini menyediakan keterangan tambahan untuk dokumentasi referensi untuk API ini.

Metode mengembalikan Match(String, Int32) substring pertama yang cocok dengan pola ekspresi reguler, dimulai pada atau setelah startat posisi karakter, dalam string input. Pola ekspresi reguler yang dicari Match(String, Int32) metode didefinisikan oleh panggilan ke salah Regex satu konstruktor kelas. Untuk informasi tentang elemen bahasa yang digunakan untuk membangun pola ekspresi reguler, lihat Bahasa Ekspresi Reguler - Referensi Cepat.

Parameter startat

Anda dapat secara opsional menentukan posisi awal dalam string dengan menggunakan startat parameter . Kecocokan apa pun yang dimulai sebelum startat dalam string diabaikan. Jika Anda tidak menentukan posisi awal, pencarian dimulai pada posisi default, yang merupakan ujung input kiri dalam pencarian kiri-ke-kanan, dan ujung input kanan dalam pencarian kanan-ke-kiri. Meskipun dimulai pada startat, indeks kecocokan yang dikembalikan relatif terhadap awal string.

Meskipun mesin ekspresi reguler tidak mengembalikan kecocokan apa pun yang dimulai sebelum startat, mesin tersebut tidak mengabaikan string sebelum startat. Ini berarti bahwa pernyataan seperti jangkar atau pernyataan lookbehind masih berlaku untuk input secara keseluruhan. Misalnya, kode berikut menyertakan pola dengan pernyataan lookbehind yang terpenuhi meskipun terjadi sebelum startat indeks 5 dalam string input.

using System;
using System.Text.RegularExpressions;

namespace Examples
{
    public class Example3
    {
        public static void Main()
        {
            string input = "Zip code: 98052";
            var regex = new Regex(@"(?<=Zip code: )\d{5}");
            Match match = regex.Match(input, 5);
            if (match.Success)
                Console.WriteLine("Match found: {0}", match.Value);
        }
    }
}

// This code prints the following output:
// Match found: 98052

Tip

  • Jika pola dimulai dengan ^ jangkar tetapi startat lebih besar dari 0, tidak ada kecocokan yang akan ditemukan dalam pencarian satu baris karena dibatasi oleh ^ untuk memulai pada indeks 0.
  • Jangkar\Gpuas di startat. Karena itu, jika Anda ingin membatasi kecocokan sehingga dimulai persis pada posisi karakter tertentu dalam string, jangkar ekspresi reguler dengan \G di sebelah kiri untuk pola kiri-ke-kanan. Ini membatasi kecocokan sehingga harus dimulai tepat pada startat (atau, ketika beberapa kecocokan diinginkan, sehingga kecocokan berdingin).

Pencarian kanan-ke-kiri

Pencarian kanan-ke-kiri, yaitu, ketika pola ekspresi reguler dibangun dengan opsi , berperilaku dengan RegexOptions.RightToLeft cara berikut:

  • Pemindaian bergerak ke arah yang berlawanan dan pola dicocokkan dari belakang (kanan) ke depan (kiri).
  • Posisi awal default adalah ujung kanan string input.
  • Jika startat ditentukan, pemindaian kanan-ke-kiri dimulai pada karakter pada startat - 1 (bukan startat).
  • \G Ketika jangkar ditentukan di ujung kanan pola, jangkar membatasi (pertama) kecocokan berakhir tepat pada startat - 1.

Untuk informasi selengkapnya tentang pencarian kanan-ke-kiri, lihat Mode kanan-ke-kiri.

Menentukan apakah kecocokan ditemukan

Anda dapat menentukan apakah pola ekspresi reguler telah ditemukan dalam string input dengan memeriksa nilai properti objek Success yang dikembalikanMatch. Jika kecocokan ditemukan, properti objek Value yang dikembalikan Match berisi substring dari input yang cocok dengan pola ekspresi reguler. Jika tidak ada kecocokan yang ditemukan, nilainya adalah String.Empty.

Kecocokan pertama atau beberapa

Metode ini mengembalikan substring pertama yang ditemukan pada atau setelah startat posisi karakter dalam input yang cocok dengan pola ekspresi reguler. Anda dapat mengambil kecocokan berikutnya dengan berulang kali memanggil metode objek Match.NextMatch yang dikembalikanMatch. Anda juga dapat mengambil semua kecocokan dalam satu panggilan metode dengan memanggil Regex.Matches(String, Int32) metode .

Pengecualian waktu habis

Pengecualian RegexMatchTimeoutException dilemparkan jika waktu eksekusi operasi pencocokan melebihi interval waktu habis yang ditentukan oleh Regex.Regex(String, RegexOptions, TimeSpan) konstruktor. Jika Anda tidak mengatur interval waktu habis saat Memanggil konstruktor, pengecualian akan dibuang jika operasi melebihi nilai batas waktu yang ditetapkan untuk domain aplikasi tempat Regex objek dibuat. Jika tidak ada waktu habis yang ditentukan dalam Regex panggilan konstruktor atau di properti domain aplikasi, atau jika nilai waktu habis adalah Regex.InfiniteMatchTimeout, tidak ada pengecualian yang dilemparkan.