Pelarian Karakter dalam Ekspresi Reguler

Garis miring terbelakang (\) dalam ekspresi reguler menunjukkan salah satu hal berikut ini:

  • Karakter yang mengikutinya adalah karakter khusus, seperti yang ditunjukkan pada tabel di bagian berikut. Misalnya, \b adalah jangkar yang menunjukkan bahwa kecocokan ekspresi reguler harus dimulai pada batas kata, \t mewakili tab, dan \x020 mewakili spasi.

  • Karakter yang sebaliknya akan ditafsirkan sebagai konstruksi bahasa yang tidak dapat dielakkan harus ditafsirkan secara harfiah. Misalnya, kurung kurawal ({) memulai definisi kuantifier, tetapi garis miring terbalik diikuti oleh kurung kurawal (\{) menunjukkan bahwa mesin ekspresi reguler harus cocok dengan kurung kurawal. Demikian pula, satu garis miring terbalik menandai awal dari konstruksi bahasa yang lolos, tetapi dua garis miring terbalik (\\) menunjukkan bahwa mesin ekspresi reguler harus cocok dengan garis miring terbalik.

Catatan

Pelarian karakter dikenali dalam pola ekspresi reguler tetapi tidak dalam pola penggantian.

Pelarian karakter di .NET

Tabel berikut mencantumkan jangkar yang didukung oleh ekspresi reguler di .NET.

Karakter atau urutan Deskripsi
Semua karakter kecuali untuk yang berikut ini:

. $ ^ { [ ( | ) * + ? \
Karakter selain yang tercantum dalam kolom Karakter atau urutan tidak memiliki arti khusus dalam ekspresi reguler; mereka cocok dengan diri mereka sendiri.

Karakter yang disertakan dalam kolom Karakter atau urutan adalah elemen bahasa ekspresi reguler khusus. Untuk mencocokkannya dalam ekspresi reguler, mereka harus lolos atau disertakan dalam grup karakter positif. Misalnya, ekspresi reguler \$\d+ atau [$]\d+ cocok dengan "$1200".
\a Cocok dengan karakter bel (alarm), \u0007.
\b Di kelas karakter [character_group], cocok dengan backspace, \u0008. (Lihat Kelas Karakter.) Di luar kelas karakter, \b adalah jangkar yang cocok dengan batas kata. (Lihat Jangkar.)
\t Cocok dengan tab, \u0009.
\r Cocok dengan carriage return, \u000D. Perhatikan bahwa \r tidak setara dengan karakter baris baru, \n.
\v Cocok dengan tab vertikal, \u000B.
\f Cocok dengan umpan formulir, \u000C.
\n Cocok dengan baris baru, \u000A.
\e Cocok dengan pelarian, \u001B.
\nnn Cocok dengan karakter ASCII, di mana nnn terdiri dari dua atau tiga digit yang mewakili kode karakter oktal. Misalnya, \040 mewakili karakter spasi. Konstruksi ini ditafsirkan sebagai backreference jika hanya memiliki satu digit (misalnya, \2) atau jika sesuai dengan jumlah grup penangkapan. (Lihat Konstruksi Backreference.)
\xnn Cocok dengan karakter ASCII, di mana nn adalah kode karakter heksadesimal dua digit.
\cX Cocok dengan karakter kontrol ASCII, di mana X adalah huruf karakter kontrol. Misalnya, \cC adalah CTRL-C.
\unnnn Cocok dengan unit kode UTF-16 yang nilainya adalah heksadesimal nnnn. Catatan: Escape karakter Perl 5 yang digunakan untuk menentukan Unicode tidak didukung oleh .NET. Escape karakter Perl 5 memiliki bentuk \x{####…}, di mana #### adalah serangkaian digit heksadesimal. Sebagai gantinya, gunakan \unnnn.
\ Ketika diikuti oleh karakter yang tidak dikenali sebagai karakter pelarian, cocok dengan karakter tersebut. Misalnya, \* cocok dengan tanda bintang (*) dan sama \x2Adengan.

Contoh

Contoh berikut mengilustrasikan penggunaan karakter pelarian dalam ekspresi reguler. Ini mengurai string yang berisi nama-nama kota terbesar di dunia dan populasi mereka pada tahun 2009. Setiap nama kota dipisahkan dari populasinya dengan tab (\t) atau bilah vertikal (| atau \u007c). Masing-masing kota dan populasinya dipisahkan satu sama lain oleh pengembalian kereta dan umpan garis.

using System;
using System.Text.RegularExpressions;

public class Example
{
   public static void Main()
   {
      string delimited = @"\G(.+)[\t\u007c](.+)\r?\n";
      string input = "Mumbai, India|13,922,125\t\n" +
                            "Shanghai, China\t13,831,900\n" +
                            "Karachi, Pakistan|12,991,000\n" +
                            "Delhi, India\t12,259,230\n" +
                            "Istanbul, Türkiye|11,372,613\n";
      Console.WriteLine("Population of the World's Largest Cities, 2009");
      Console.WriteLine();
      Console.WriteLine("{0,-20} {1,10}", "City", "Population");
      Console.WriteLine();
      foreach (Match match in Regex.Matches(input, delimited))
         Console.WriteLine("{0,-20} {1,10}", match.Groups[1].Value,
                                            match.Groups[2].Value);
   }
}
// The example displays the following output:
//       Population of the World's Largest Cities, 2009
//
//       City                 Population
//
//       Mumbai, India        13,922,125
//       Shanghai, China      13,831,900
//       Karachi, Pakistan    12,991,000
//       Delhi, India         12,259,230
//       Istanbul, Türkiye     11,372,613
Imports System.Text.RegularExpressions

Module Example
    Public Sub Main()
        Dim delimited As String = "\G(.+)[\t\u007c](.+)\r?\n"
        Dim input As String = "Mumbai, India|13,922,125" + vbCrLf + _
                              "Shanghai, China" + vbTab + "13,831,900" + vbCrLf + _
                              "Karachi, Pakistan|12,991,000" + vbCrLf + _
                              "Delhi, India" + vbTab + "12,259,230" + vbCrLf + _
                              "Istanbul, Türkiye|11,372,613" + vbCrLf
        Console.WriteLine("Population of the World's Largest Cities, 2009")
        Console.WriteLine()
        Console.WriteLine("{0,-20} {1,10}", "City", "Population")
        Console.WriteLine()
        For Each match As Match In Regex.Matches(input, delimited)
            Console.WriteLine("{0,-20} {1,10}", match.Groups(1).Value, _
                                               match.Groups(2).Value)
        Next
    End Sub
End Module
' The example displays the following output:
'       Population of the World's Largest Cities, 2009
'       
'       City                 Population
'       
'       Mumbai, India        13,922,125
'       Shanghai, China      13,831,900
'       Karachi, Pakistan    12,991,000
'       Delhi, India         12,259,230
'       Istanbul, Türkiye     11,372,613

Regex \G(.+)[\t\u007c](.+)\r?\n ditafsirkan seperti yang diperlihatkan dalam tabel berikut.

Pola Deskripsi
\G Mulai kecocokan di mana pertandingan terakhir berakhir.
(.+) Mencocokkan karakter apa pun satu atau beberapa kali. Ini adalah grup penangkapan pertama.
[\t\u007c] Mencocokkan tab (\t) atau bilah vertikal (|).
(.+) Mencocokkan karakter apa pun satu atau beberapa kali. Ini adalah grup pengambilan kedua.
\r?\n Mencocokkan nol atau satu kemunculan pengembalian pengangkutan diikuti oleh baris baru.

Lihat juga