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 tetapistartat
lebih besar dari 0, tidak ada kecocokan yang akan ditemukan dalam pencarian satu baris karena dibatasi oleh^
untuk memulai pada indeks 0. - Jangkar
\G
puas distartat
. 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 padastartat
(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 padastartat
- 1 (bukanstartat
). \G
Ketika jangkar ditentukan di ujung kanan pola, jangkar membatasi (pertama) kecocokan berakhir tepat padastartat
- 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.