Aracılığıyla paylaş


Normal İfadelerdeki Değişimler

Değiştirmeler, yalnızca değiştirme desenleri içinde tanınan dil öğeleridir. Giriş dizesindeki eşleşen metni değiştirmek üzere metnin tamamını veya bir bölümünü tanımlamak için normal ifade deseni kullanırlar. Değiştirme düzeni, sabit karakterlerle birlikte bir veya daha fazla değiştirmeden oluşabilir. Değiştirme desenleri, Regex.Replace parametresi olan replacement yöntemin aşırı yüklemelerine ve Match.Result yöntemine sağlanır. Yöntemler, eşlenen deseni parametresi tarafından replacement tanımlanan desenle değiştirir.

.NET, aşağıdaki tabloda listelenen değiştirme öğelerini tanımlar.

Değiştirme Açıklama
$ sayı Sayıyla tanımlanan yakalama grubuyla eşleşen son alt dizeyi içerir; buradasayı , değiştirme dizesinde ondalık bir değerdir. Daha fazla bilgi için bkz. Numaralandırılmış Grup Değiştirme.
${ name } Değiştirme dizesinde (?<isim> ) olarak belirtilen adlandırılmış grupla eşleşen son alt dizeyi içerir. Daha fazla bilgi için bkz. Adlandırılmış Grup Değiştirme.
$$ Değiştirme dizesi içinde tek bir "$" sabit içerir. Daha fazla bilgi için bkz. "$" Simgesi Değiştirme.
$& Değiştirme dizesi, eşleşmenin tamamının bir kopyasını içerir. Daha fazla bilgi için bkz. Eşleşmenin Tamamını Değiştirme.
$` Değiştirme dizesinde eşleşmeden önceki giriş dizesinin tüm metnini içerir. Daha fazla bilgi için bkz. Eşleştirmeden Önce Metni Değiştirme.
$' Değiştirme dizesindeki eşleşmeden sonra giriş dizesinin tüm metnini içerir. Daha fazla bilgi için Eşleştirmeden Sonra Metni Değiştirme bölümüne bakın.
$+ Değiştirme dizesinde yakalanan son grubu içerir. Detaylı bilgi için Son Yakalanan Grubu Değiştirme bölümüne bakın.
$_ Değiştirme dizesine giriş dizesinin tamamını ekler. Daha fazla bilgi için bkz. Giriş Dizesinin Tamamını Değiştirme.

Değiştirme Öğeleri ve Değiştirme Modelleri

Değiştirmeler, değiştirme düzeninde tanınan tek özel yapılardır. Karakter kaçışları ve herhangi bir karakterle eşleşen nokta (.) dahil olmak üzere diğer normal ifade dili öğelerinin hiçbiri desteklenmemektedir. Benzer şekilde, değiştirme dili öğeleri yalnızca değiştirme desenlerinde tanınır ve normal ifade desenlerinde hiçbir zaman geçerli olmaz.

Normal ifade deseninde veya değiştirmede görünebilen tek karakter, her bağlamda farklı bir anlamı olmasına rağmen karakterdir $ . Düzenli ifade deseninde, $ dizenin sonuyla eşleşen bir çapa işaretidir. Değiştirme düzeninde, $ değiştirmenin başlangıcını gösterir.

Uyarı

Normal ifade içindeki değiştirme desenine benzer işlevsellik için geri referans kullanın. Geri başvurular hakkında daha fazla bilgi için bkz. Geri Başvuru Yapıları.

Numaralandırılmış Grup Değiştirme

$ sayı dili öğesi, değiştirme dizesindeki sayı yakalama grubuyla eşleşen son alt dizeyi içerir; burada sayı, yakalama grubunun dizinidir. Örneğin, değiştirme deseni $1 eşleşen alt dizenin yakalanan ilk grupla değiştirileceğine işaret eder. Numaralandırılmış yakalama grupları hakkında daha fazla bilgi için bkz. Gruplandırma Yapıları.

İzleyen $ tüm basamaklar sayı grubuna ait olarak yorumlanır. Amacınız bu değilse, bunun yerine adlandırılmış bir grubu değiştirebilirsiniz. Örneğin, değiştirme dizesini "1" sayısıyla birlikte yakalanan ilk grubun değeri olarak tanımlamak için yerine ${1}1 değiştirme dizesini $11 kullanabilirsiniz. Daha fazla bilgi için bkz. Adlandırılmış Grup Değiştirme.

(?< söz dizimi kullanılmadan açıkça ad atanmamış gruplar soldan sağa, birden başlayarak numaralandırılır. Adlandırılmış gruplar da soldan sağa doğru numaralandırılır ve son adlandırılmamış grubun dizininden büyük bir değerden başlar. Örneğin, normal ifadesinde (\w)(?<digit>\d), adlandırılmış grubun dizini digit 2'dir.

Sayı normal ifade deseninde tanımlanmış geçerli bir yakalama grubu belirtmezse, $sayı her eşleşmeyi değiştirmek için kullanılan bir sabit karakter dizisi olarak yorumlanır.

Aşağıdaki örnek, para birimi simgesini ondalık değerden kaldırmak için $sayı dönüştürmesini kullanır. Parasal değerin başında veya sonunda bulunan para birimi simgelerini kaldırır ve en yaygın iki ondalık ayırıcıyı ("." ve ",") tanır.

using System;
using System.Text.RegularExpressions;

public class Example
{
   public static void Main()
   {
      string pattern = @"\p{Sc}*(\s?\d+[.,]?\d*)\p{Sc}*";
      string replacement = "$1";
      string input = "$16.32 12.19 £16.29 €18.29  €18,29";
      string result = Regex.Replace(input, pattern, replacement);
      Console.WriteLine(result);
   }
}
// The example displays the following output:
//       16.32 12.19 16.29 18.29  18,29
Imports System.Text.RegularExpressions

Module Example
    Public Sub Main()
        Dim pattern As String = "\p{Sc}*(\s?\d+[.,]?\d*)\p{Sc}*"
        Dim replacement As String = "$1"
        Dim input As String = "$16.32 12.19 £16.29 €18.29  €18,29"
        Dim result As String = Regex.Replace(input, pattern, replacement)
        Console.WriteLine(result)
    End Sub
End Module
' The example displays the following output:
'       16.32 12.19 16.29 18.29  18,29

Normal ifade deseni \p{Sc}*(\s?\d+[.,]?\d*)\p{Sc}* aşağıdaki tabloda gösterildiği gibi tanımlanır.

Desen Açıklama
\p{Sc}* Sıfır veya daha fazla para birimi simgesi karakterini eşleştirin.
\s? Sıfır veya bir beyaz boşluk karakterini eşleştirin.
\d+ Bir veya daha fazla ondalık basamağı eşleştirin.
[.,]? Sıfır veya bir nokta ya da virgül eşleştirin.
\d* Sıfır veya daha fazla ondalık basamağı eşleştirin.
(\s?\d+[.,]?\d*) Bir boşlukla başlayan ve bir veya daha fazla ondalık basamağı takip eden, ardından sıfır veya bir nokta ya da virgül gelen ve sıfır veya daha fazla ondalık basamakla devam eden yapıyı eşleştirin. İlk yakalama grubu budur. Değiştirme düzeni olduğundan $1, yöntemine Regex.Replace yapılan çağrı, eşleşen alt dizenin tamamını bu yakalanan grupla değiştirir.

Adlandırılmış Grubu Değiştirme

${ Name} language öğesi, ad yakalama grubuyla eşleşen son alt dizenin yerini alır; burada ad, ad dili öğesi tarafından (?< tanımlanan bir yakalama grubunun adıdır>). Adlandırılmış yakalama grupları hakkında daha fazla bilgi için bkz. Gruplandırma Yapıları.

Ad, düzenli ifade deseninde tanımlanan geçerli bir adlandırılmış yakalama grubu belirtmiyorsa ancak rakamlardan oluşuyorsa, ${ad} numaralı bir grup olarak yorumlanır.

name, normal ifade düzeninde tanımlanmış geçerli bir adlandırılmış yakalama grubu veya geçerli bir numaralandırılmış yakalama grubu belirtmiyorsa, ${name} her eşleşmeyi değiştirmek için kullanılan bir sabit karakter dizisi olarak yorumlanır.

Aşağıdaki örnek, para birimi simgesini ondalık değerden kaldırmak için ${name} değiştirmesini kullanır. Parasal değerin başında veya sonunda bulunan para birimi simgelerini kaldırır ve en yaygın iki ondalık ayırıcıyı ("." ve ",") tanır.

using System;
using System.Text.RegularExpressions;

public class Example
{
   public static void Main()
   {
      string pattern = @"\p{Sc}*(?<amount>\s?\d+[.,]?\d*)\p{Sc}*";
      string replacement = "${amount}";
      string input = "$16.32 12.19 £16.29 €18.29  €18,29";
      string result = Regex.Replace(input, pattern, replacement);
      Console.WriteLine(result);
   }
}
// The example displays the following output:
//       16.32 12.19 16.29 18.29  18,29
Imports System.Text.RegularExpressions

Module Example
    Public Sub Main()
        Dim pattern As String = "\p{Sc}*(?<amount>\s?\d+[.,]?\d*)\p{Sc}*"
        Dim replacement As String = "${amount}"
        Dim input As String = "$16.32 12.19 £16.29 €18.29  €18,29"
        Dim result As String = Regex.Replace(input, pattern, replacement)
        Console.WriteLine(result)
    End Sub
End Module
' The example displays the following output:
'       16.32 12.19 16.29 18.29  18,29

Normal ifade deseni \p{Sc}*(?<amount>\s?\d[.,]?\d*)\p{Sc}* aşağıdaki tabloda gösterildiği gibi tanımlanır.

Desen Açıklama
\p{Sc}* Sıfır veya daha fazla para birimi simgesi karakterini eşleştirin.
\s? Sıfır veya bir beyaz boşluk karakterini eşleştirin.
\d+ Bir veya daha fazla ondalık basamağı eşleştirin.
[.,]? Sıfır veya bir nokta ya da virgül eşleştirin.
\d* Sıfır veya daha fazla ondalık basamağı eşleştirin.
(?<amount>\s?\d[.,]?\d*) Bir boşluk, ardından bir veya daha fazla rakam, ardından sıfır veya bir nokta ya da virgül, ardından sıfır veya daha fazla rakamı eşleştirin. Bu, amount adlı yakalama grubudur. Değiştirme düzeni olduğundan ${amount}, yöntemine Regex.Replace yapılan çağrı, eşleşen alt dizenin tamamını bu yakalanan grupla değiştirir.

"$" Karakterini Değiştirme

"$$ yerleştirme, değiştirilen dizede harfi harfine bir "$" karakteri ekler."

Aşağıdaki örnek, geçerli kültürün para birimi simgesini ve bir para birimi dizesindeki konumunu belirlemek için NumberFormatInfo nesnesini kullanır. Ardından hem normal ifade deseni hem de dinamik olarak bir değiştirme deseni oluşturur. Örnek, geçerli kültürü en-USolan bir bilgisayarda çalıştırılıyorsa, \b(\d+)(\.(\d+))? normal ifade desenini ve $$ $1$2 değiştirme desenini oluşturacaktır. Değiştirme düzeni, eşleşen metni bir para birimi simgesi ve ardından birinci ve ikinci yakalanan grupların izlediği bir boşlukla değiştirir.

using System;
using System.Globalization;
using System.Text.RegularExpressions;

public class Example
{
   public static void Main()
   {
      // Define array of decimal values.
      string[] values= { "16.35", "19.72", "1234", "0.99"};
      // Determine whether currency precedes (True) or follows (False) number.
      bool precedes = NumberFormatInfo.CurrentInfo.CurrencyPositivePattern % 2 == 0;
      // Get decimal separator.
      string cSeparator = NumberFormatInfo.CurrentInfo.CurrencyDecimalSeparator;
      // Get currency symbol.
      string symbol = NumberFormatInfo.CurrentInfo.CurrencySymbol;
      // If symbol is a "$", add an extra "$".
      if (symbol == "$") symbol = "$$";

      // Define regular expression pattern and replacement string.
      string pattern = @"\b(\d+)(" + cSeparator + @"(\d+))?";
      string replacement = "$1$2";
      replacement = precedes ? symbol + " " + replacement : replacement + " " + symbol;
      foreach (string value in values)
         Console.WriteLine($"{value} --> {Regex.Replace(value, pattern, replacement)}");
   }
}
// The example displays the following output:
//       16.35 --> $ 16.35
//       19.72 --> $ 19.72
//       1234 --> $ 1234
//       0.99 --> $ 0.99
Imports System.Globalization
Imports System.Text.RegularExpressions

Module Example
    Public Sub Main()
        ' Define array of decimal values.
        Dim values() As String = {"16.35", "19.72", "1234", "0.99"}
        ' Determine whether currency precedes (True) or follows (False) number.
        Dim precedes As Boolean = (NumberFormatInfo.CurrentInfo.CurrencyPositivePattern Mod 2 = 0)
        ' Get decimal separator.
        Dim cSeparator As String = NumberFormatInfo.CurrentInfo.CurrencyDecimalSeparator
        ' Get currency symbol.
        Dim symbol As String = NumberFormatInfo.CurrentInfo.CurrencySymbol
        ' If symbol is a "$", add an extra "$".
        If symbol = "$" Then symbol = "$$"

        ' Define regular expression pattern and replacement string.
        Dim pattern As String = "\b(\d+)(" + cSeparator + "(\d+))?"
        Dim replacement As String = "$1$2"
        replacement = If(precedes, symbol + " " + replacement, replacement + " " + symbol)
        For Each value In values
            Console.WriteLine("{0} --> {1}", value, Regex.Replace(value, pattern, replacement))
        Next
    End Sub
End Module
' The example displays the following output:
'       16.35 --> $ 16.35
'       19.72 --> $ 19.72
'       1234 --> $ 1234
'       0.99 --> $ 0.99

Normal ifade deseni \b(\d+)(\.(\d+))? aşağıdaki tabloda gösterildiği gibi tanımlanır.

Desen Açıklama
\b Eşleşmeyi bir sözcük sınırının başında başlatın.
(\d+) Bir veya daha fazla ondalık basamağı eşleştirin. İlk yakalama grubu budur.
\. Bir noktayla (ondalık ayırıcı) eşleş.
(\d+) Bir veya daha fazla ondalık basamağı eşleştirin. Bu, üçüncü yakalama grubudur.
(\.(\d+))? Sıfır veya bir kere görülen bir noktayla başlayan ve bir veya daha fazla ondalık basamak içeren dizilişi eşleştirin. Bu ikinci yakalama grubudur.

Tüm Eşleşmeyi Değiştirme

Yerine koyma $& işlemi, eşleşmenin tamamını değiştirme dizesine dahil eder. Genellikle, eşleşen dizenin başına veya sonuna bir alt dize eklemek için kullanılır. Örneğin, değiştirme deseni ($&) her eşleşmenin başına ve sonuna parantez ekler. Eşleşme yoksa, $& yerine koymanın hiçbir etkisi yoktur.

Aşağıdaki örnek, bir dize dizisinde saklanan kitap başlıklarının başına ve sonuna tırnak işaretleri eklemek için $& yer değiştirmesini kullanır.

using System;
using System.Text.RegularExpressions;

public class Example
{
   public static void Main()
   {
      string pattern = @"^(\w+\s?)+$";
      string[] titles = { "A Tale of Two Cities",
                          "The Hound of the Baskervilles",
                          "The Protestant Ethic and the Spirit of Capitalism",
                          "The Origin of Species" };
      string replacement = "\"$&\"";
      foreach (string title in titles)
         Console.WriteLine(Regex.Replace(title, pattern, replacement));
   }
}
// The example displays the following output:
//       "A Tale of Two Cities"
//       "The Hound of the Baskervilles"
//       "The Protestant Ethic and the Spirit of Capitalism"
//       "The Origin of Species"
Imports System.Text.RegularExpressions

Module Example
    Public Sub Main()
        Dim pattern As String = "^(\w+\s?)+$"
        Dim titles() As String = {"A Tale of Two Cities", _
                                   "The Hound of the Baskervilles", _
                                   "The Protestant Ethic and the Spirit of Capitalism", _
                                   "The Origin of Species"}
        Dim replacement As String = """$&"""
        For Each title As String In titles
            Console.WriteLine(Regex.Replace(title, pattern, replacement))
        Next
    End Sub
End Module
' The example displays the following output:
'       "A Tale of Two Cities"
'       "The Hound of the Baskervilles"
'       "The Protestant Ethic and the Spirit of Capitalism"
'       "The Origin of Species"

Normal ifade deseni ^(\w+\s?)+$ aşağıdaki tabloda gösterildiği gibi tanımlanır.

Desen Açıklama
^ Eşleşmeyi giriş dizesinin başında başlatın.
(\w+\s?)+ Bir veya daha fazla sözcük karakterinin ve ardından sıfır veya bir boşluk karakterinin desenini bir veya daha fazla kez eşleştirin.
$ Giriş dizesinin sonuyla eşleş.

Değiştirme "$&" düzeni, her eşleşmenin başına ve sonuna doğrudan bir tırnak işareti ekler.

Eşleştirmeden Önceki Metni Değiştirme

Değiştirme, $` eşleşmeden önce eşleşen dizeyi giriş dizesinin tamamıyla değiştirir. Yani, eşleşen metni kaldırırken giriş dizesini eşleşmeye kadar çoğaltır. Eşleşen metni izleyen tüm metinler sonuç dizesinde değiştirilmez. Bir giriş dizesinde birden çok eşleşme varsa, değiştirilen metin, metnin önceki eşleşmeler tarafından değiştirildiği dize yerine özgün giriş dizesinden türetilir. (Örnek, bir illüstrasyon sağlar.) Eşleşme yoksa, $` yerine koymanın hiçbir etkisi yoktur.

Aşağıdaki örnek, giriş dizesindeki bir veya daha fazla ondalık basamak dizisiyle eşleştirmek için normal ifade desenini \d+ kullanır. Değiştirme dizesi $` , bu basamakları eşleşmeden önceki metinle değiştirir.

using System;
using System.Text.RegularExpressions;

public class Example
{
   public static void Main()
   {
      string input = "aa1bb2cc3dd4ee5";
      string pattern = @"\d+";
      string substitution = "$`";
      Console.WriteLine("Matches:");
      foreach (Match match in Regex.Matches(input, pattern))
         Console.WriteLine($"   {match.Value} at position {match.Index}");

      Console.WriteLine($"Input string:  {input}");
      Console.WriteLine("Output string: " +
                        Regex.Replace(input, pattern, substitution));
   }
}
// The example displays the following output:
//    Matches:
//       1 at position 2
//       2 at position 5
//       3 at position 8
//       4 at position 11
//       5 at position 14
//    Input string:  aa1bb2cc3dd4ee5
//    Output string: aaaabbaa1bbccaa1bb2ccddaa1bb2cc3ddeeaa1bb2cc3dd4ee
Imports System.Text.RegularExpressions

Module Example
    Public Sub Main()
        Dim input As String = "aa1bb2cc3dd4ee5"
        Dim pattern As String = "\d+"
        Dim substitution As String = "$`"
        Console.WriteLine("Matches:")
        For Each match As Match In Regex.Matches(input, pattern)
            Console.WriteLine("   {0} at position {1}", match.Value, match.Index)
        Next
        Console.WriteLine("Input string:  {0}", input)
        Console.WriteLine("Output string: " + _
                          Regex.Replace(input, pattern, substitution))
    End Sub
End Module
' The example displays the following output:
'    Matches:
'       1 at position 2
'       2 at position 5
'       3 at position 8
'       4 at position 11
'       5 at position 14
'    Input string:  aa1bb2cc3dd4ee5
'    Output string: aaaabbaa1bbccaa1bb2ccddaa1bb2cc3ddeeaa1bb2cc3dd4ee

Bu örnekte, giriş dizesi "aa1bb2cc3dd4ee5" beş eşleşme içerir. Aşağıdaki tabloda, $` ikame işleminin, düzenli ifade motorunun giriş dizesindeki her eşleşmeyi nasıl değiştirdiği gösterilmektedir. Eklenen metin sonuçlar sütununda kalın olarak gösterilir.

Maç Pozisyon Eşleşmeden önceki dize Sonuç dizesi
1 2 Acar aaaabb2cc3dd4ee5
2 5 aa1bb aaaabbaa1bbcc3dd4ee5
3 8 aa1bb2cc aaaabbaa1bbccaa1bb2ccdd4ee5
4 11 aa1bb2cc3dd aaaabbaa1bbccaa1bb2ccddaa1bb2cc3ddee5
5 14 aa1bb2cc3dd4ee aaaabbaa1bbccaa1bb2ccddaa1bb2cc3ddeeaa1bb2cc3dd4ee

Eşleşmeden Sonra Metni Değiştirme

$' yerine koyma, eşleşen dizeyi, eşleşmeden sonraki giriş dizesinin tamamı ile değiştirir. Diğer bir ifadeyle, eşleşen metni kaldırırken eşleşmeden sonra giriş dizesini yineler. Eşleşen metnin önüne gelen tüm metinler sonuç dizesinde değiştirilmez. Eşleşme yoksa, $' yerine koymanın hiçbir etkisi yoktur.

Aşağıdaki örnek, giriş dizesindeki bir veya daha fazla ondalık basamak dizisiyle eşleştirmek için normal ifade desenini \d+ kullanır. Değiştirme dizesi $' , bu basamakları eşleşmeyi izleyen metinle değiştirir.

using System;
using System.Text.RegularExpressions;

public class Example
{
   public static void Main()
   {
      string input = "aa1bb2cc3dd4ee5";
      string pattern = @"\d+";
      string substitution = "$'";
      Console.WriteLine("Matches:");
      foreach (Match match in Regex.Matches(input, pattern))
         Console.WriteLine($"   {match.Value} at position {match.Index}");
      Console.WriteLine($"Input string:  {input}");
      Console.WriteLine("Output string: " +
                        Regex.Replace(input, pattern, substitution));
   }
}
// The example displays the following output:
//    Matches:
//       1 at position 2
//       2 at position 5
//       3 at position 8
//       4 at position 11
//       5 at position 14
//    Input string:  aa1bb2cc3dd4ee5
//    Output string: aabb2cc3dd4ee5bbcc3dd4ee5ccdd4ee5ddee5ee
Imports System.Text.RegularExpressions

Module Example
    Public Sub Main()
        Dim input As String = "aa1bb2cc3dd4ee5"
        Dim pattern As String = "\d+"
        Dim substitution As String = "$'"
        Console.WriteLine("Matches:")
        For Each match As Match In Regex.Matches(input, pattern)
            Console.WriteLine("   {0} at position {1}", match.Value, match.Index)
        Next
        Console.WriteLine("Input string:  {0}", input)
        Console.WriteLine("Output string: " + _
                          Regex.Replace(input, pattern, substitution))
    End Sub
End Module
' The example displays the following output:
'    Matches:
'       1 at position 2
'       2 at position 5
'       3 at position 8
'       4 at position 11
'       5 at position 14
'    Input string:  aa1bb2cc3dd4ee5
'    Output string: aabb2cc3dd4ee5bbcc3dd4ee5ccdd4ee5ddee5ee

Bu örnekte, giriş dizesi "aa1bb2cc3dd4ee5" beş eşleşme içerir. Aşağıdaki tabloda, $' ikame işleminin, düzenli ifade motorunun giriş dizesindeki her eşleşmeyi nasıl değiştirdiği gösterilmektedir. Eklenen metin sonuçlar sütununda kalın olarak gösterilir.

Maç Pozisyon Eşleştirmeden sonra dize Sonuç dizesi
1 2 bb2cc3dd4ee5 aabb2cc3dd4ee5bb2cc3dd4ee5
2 5 cc3dd4ee5 aabb2cc3dd4ee5bbcc3dd4ee5cc3dd4ee5
3 8 dd4ee5 aabb2cc3dd4ee5bbcc3dd4ee5ccdd4ee5dd4ee5 dd4ee5
4 11 ee5 aabb2cc3dd4ee5bbcc3dd4ee5ccdd4ee5ddee5 ee5
5 14 String.Empty aabb2cc3dd4ee5bbcc3dd4ee5ccdd4ee5ddee5eee

Son Yakalanan Grubu Değiştirme

Değiştirme, $+ eşleşen dizeyi yakalanan son grupla değiştirir. Yakalanan grup yoksa veya yakalanan son grubun değeri ise String.Empty, değiştirmenin $+ hiçbir etkisi yoktur.

Aşağıdaki örnek, bir dizedeki yinelenen sözcükleri tanımlar ve bu sözcükleri $+ ile tek bir kereye indirir. RegexOptions.IgnoreCase seçeneği, büyük/küçük harf farkı dışında aynı olan sözcüklerin yinelenen olarak kabul edilmesini sağlamak için kullanılır.

using System;
using System.Text.RegularExpressions;

public class Example
{
   public static void Main()
   {
      string pattern = @"\b(\w+)\s\1\b";
      string substitution = "$+";
      string input = "The the dog jumped over the fence fence.";
      Console.WriteLine(Regex.Replace(input, pattern, substitution,
                        RegexOptions.IgnoreCase));
   }
}
// The example displays the following output:
//      The dog jumped over the fence.
Imports System.Text.RegularExpressions

Module Example
    Public Sub Main()
        Dim pattern As String = "\b(\w+)\s\1\b"
        Dim substitution As String = "$+"
        Dim input As String = "The the dog jumped over the fence fence."
        Console.WriteLine(Regex.Replace(input, pattern, substitution, _
                                        RegexOptions.IgnoreCase))
    End Sub
End Module
' The example displays the following output:
'      The dog jumped over the fence.

Normal ifade deseni \b(\w+)\s\1\b aşağıdaki tabloda gösterildiği gibi tanımlanır.

Desen Açıklama
\b Eşleşmeyi bir kelime sınırından başlatın.
(\w+) Bir veya daha fazla sözcük karakteri eşleştir. İlk yakalama grubu budur.
\s Bir boşluk karakteri eşleştirin.
\1 yakalanan ilk grupla eşleş.
\b Eşleşmeyi bir sözcük sınırında sonlandırın.

Giriş Dizesinin Tamamını Değiştirme

Değiştirme, $_ eşleşen dizeyi giriş dizesinin tamamıyla değiştirir. Yani, eşleşen metni kaldırır ve eşleşen metin de dahil olmak üzere bütün dizgiyle değiştirir.

Aşağıdaki örnek, giriş dizesindeki bir veya daha fazla ondalık basamakla eşleşir. Bunları giriş dizesinin $_ tamamıyla değiştirmek için değiştirme işlemini kullanır.

using System;
using System.Text.RegularExpressions;

public class Example
{
   public static void Main()
   {
      string input = "ABC123DEF456";
      string pattern = @"\d+";
      string substitution = "$_";
      Console.WriteLine($"Original string:          {input}");
      Console.WriteLine($"String with substitution: {Regex.Replace(input, pattern, substitution)}");
   }
}
// The example displays the following output:
//       Original string:          ABC123DEF456
//       String with substitution: ABCABC123DEF456DEFABC123DEF456
Imports System.Text.RegularExpressions

Module Example
    Public Sub Main()
        Dim input As String = "ABC123DEF456"
        Dim pattern As String = "\d+"
        Dim substitution As String = "$_"
        Console.WriteLine("Original string:          {0}", input)
        Console.WriteLine("String with substitution: {0}", _
                          Regex.Replace(input, pattern, substitution))
    End Sub
End Module
' The example displays the following output:
'       Original string:          ABC123DEF456
'       String with substitution: ABCABC123DEF456DEFABC123DEF456

Bu örnekte, giriş dizesi "ABC123DEF456" iki eşleşme içerir. Aşağıdaki tabloda, $_ ikame işleminin, düzenli ifade motorunun giriş dizesindeki her eşleşmeyi nasıl değiştirdiği gösterilmektedir. Eklenen metin sonuçlar sütununda kalın olarak gösterilir.

Maç Pozisyon Maç Sonuç dizesi
1 3 123 ABCABC123DEF456DEF456
2 5 456 ABCABC123DEF456DEFABC123DEF456

Ayrıca bakınız