Normal İfadelerdeki Karakter Çıkışları
Normal ifadedeki ters eğik çizgi (\) aşağıdakilerden birini gösterir:
Bunu izleyen karakter, aşağıdaki bölümdeki tabloda gösterildiği gibi özel bir karakterdir. Örneğin,
\b
normal ifade eşleşmelerinin sözcük sınırında başlaması gerektiğini,\t
bir sekmeyi ve\x020
bir boşluğu temsil ettiğini gösteren bir yer işaretidir.Aksi takdirde, manzarasız bir dil yapısı olarak yorumlanacak bir karakter, tam anlamıyla yorumlanmalıdır. Örneğin, küme ayracı (
{
) bir niceleyicinin tanımını başlatır, ancak bir ters eğik çizgi ve ardından ayraç (\{
) normal ifade altyapısının küme ayracı ile eşleşmesi gerektiğini gösterir. Benzer şekilde, tek bir ters eğik çizgi kaçış dili yapısının başlangıcını işaretler, ancak iki ters eğik çizgi (\\
), normal ifade altyapısının ters eğik çizgiyle eşleşmesi gerektiğini gösterir.
Not
Karakter kaçışları normal ifade desenlerinde tanınır, ancak değiştirme desenlerinde tanınmaz.
.NET'te Karakter Kaçışları
Aşağıdaki tabloda.NET'te normal ifadeler tarafından desteklenen karakter çıkışları listelenmektedir.
Karakter veya sıra | Açıklama |
---|---|
Aşağıdakiler dışındaki tüm karakterler: . $ ^ { [ ( | ) * + ? \ |
Karakter veya sıra sütununda listelenenler dışındaki karakterlerin normal ifadelerde özel bir anlamı yoktur; kendileriyle eşleşirler. Karakter veya sıra sütununa eklenen karakterler özel normal ifade dili öğeleridir. Bunları normal ifadede eşleştirmek için kaçış veya pozitif karakter grubuna dahil edilmeleri gerekir. Örneğin, normal ifade \$\d+ veya [$]\d+ "$1200" ile eşleşir. |
\a |
Bir zil (alarm) karakteriyle eşleşir. \u0007 |
\b |
[ character_group] karakter sınıfında, bir geri al ile \u0008 eşleşir. (Bkz. Karakter Sınıfları.) Karakter sınıfının dışında, \b sözcük sınırıyla eşleşen bir yer işaretidir. (Bkz. Tutturucular.) |
\t |
Bir sekmeyle eşleşir. \u0009 |
\r |
Bir satır başı ile \u000D eşleşir. \r Yeni satır karakteriyle \n eşdeğer olmadığını unutmayın. |
\v |
Dikey sekmeyle eşleşir. \u000B |
\f |
Form akışıyla eşleşir. \u000C |
\n |
Yeni bir satırla eşleşir. \u000A |
\e |
Bir kaçışla eşleşir. \u001B |
\ nnn |
Nnn'nin sekizli karakter kodunu temsil eden iki veya üç basamaktan oluştuğu bir ASCII karakteriyle eşleşir. Örneğin, \040 bir boşluk karakterini temsil eder. Bu yapı, yalnızca bir basamak (örneğin, \2 ) varsa veya bir yakalama grubunun sayısına karşılık geliyorsa geri başvuru olarak yorumlanır. (Bkz. Geri Başvuru Yapıları.) |
\x nn |
Nn'nin iki basamaklı onaltılık karakter kodu olduğu bir ASCII karakteriyle eşleşir. |
\c X |
Bir ASCII denetim karakteriyle eşleşir; burada X, denetim karakterinin harfidir. Örneğin, \cC CTRL-C şeklindedir. |
\u nnnn |
Değeri nnnn onaltılık olan utf-16 kod birimiyle eşleşir. Not: Unicode belirtmek için kullanılan Perl 5 karakter kaçışı .NET tarafından desteklenmez. Perl 5 karakter kaçışı, onaltılık basamaklardan oluşan bir dizi olan… biçimindedir\x{ ####…} .#### Bunun yerine nnnn kullanın\u . |
\ |
Ardından kaçış karakteri olarak tanınmayan bir karakter geldiğinde, bu karakterle eşleşir. Örneğin, \* yıldız (*) ile eşleşir ve ile \x2A aynıdır. |
Bir Örnek
Aşağıdaki örnekte normal ifadede karakter kaçışlarının kullanımı gösterilmektedir. 2009'da dünyanın en büyük şehirlerinin ve nüfuslarının adlarını içeren bir dizeyi ayrıştırıyor. Her şehir adı, popülasyonundan bir sekme (\t
) veya dikey çubuk (| veya \u007c
) ile ayrılır. Tek tek şehirler ve nüfusları, bir satır başı ve hat beslemesi ile birbirinden ayrılır.
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
Normal ifade \G(.+)[\t\u007c](.+)\r?\n
aşağıdaki tabloda gösterildiği gibi yorumlanır.
Desen | Açıklama |
---|---|
\G |
Son eşleşmenin sona erdiği eşleşmeye başlayın. |
(.+) |
Herhangi bir karakteri bir veya daha fazla kez eşleştirin. Bu ilk yakalama grubudur. |
[\t\u007c] |
Bir sekmeyi (\t ) veya dikey çubuğu (|) eşleştirin. |
(.+) |
Herhangi bir karakteri bir veya daha fazla kez eşleştirin. Bu ikinci yakalama grubudur. |
\r?\n |
Satır başı ve ardından yeni bir çizginin sıfır veya bir oluşumunu eşleştirin. |