Vervangingen in reguliere expressies

Vervangingen zijn taalelementen die alleen binnen vervangingspatronen worden herkend. Ze gebruiken een patroon voor reguliere expressies om alle of een deel van de tekst te definiëren die overeenkomt met tekst in de invoertekenreeks te vervangen. Het vervangingspatroon kan bestaan uit een of meer vervangingen, samen met letterlijke tekens. Vervangingspatronen worden verstrekt voor overbelastingen van de Regex.Replace methode die een replacement parameter en de Match.Result methode hebben. De methoden vervangen het overeenkomende patroon door het patroon dat is gedefinieerd door de replacement parameter.

.NET definieert de vervangingselementen die worden vermeld in de volgende tabel.

Vervanging Beschrijving
$ Nummer Bevat de laatste subtekenreeks die overeenkomt met de vastleggende groep die wordt geïdentificeerd door getal, waarbij getal een decimale waarde is, in de vervangende tekenreeks. Zie Een genummerde groep vervangen voor meer informatie.
${ name } Bevat de laatste subtekenreeks die overeenkomt met de benoemde groep die is aangewezen op (?<naam> ) in de vervangende tekenreeks. Zie Een benoemde groep vervangen voor meer informatie.
$$ Bevat één letterlijke waarde $in de vervangende tekenreeks. Zie Het symbool $vervangen voor meer informatie.
$& Bevat een kopie van de volledige overeenkomst in de vervangende tekenreeks. Zie De volledige overeenkomst vervangen voor meer informatie.
$` Bevat alle tekst van de invoertekenreeks vóór de overeenkomst in de vervangende tekenreeks. Zie De tekst vervangen voor de overeenkomst voor meer informatie.
$' Bevat alle tekst van de invoertekenreeks na de overeenkomst in de vervangende tekenreeks. Zie De tekst vervangen na de overeenkomst voor meer informatie.
$+ Bevat de laatste groep die is vastgelegd in de vervangende tekenreeks. Zie De laatst vastgelegde groep vervangen voor meer informatie.
$_ Bevat de volledige invoertekenreeks in de vervangende tekenreeks. Zie De volledige invoertekenreeks vervangen voor meer informatie.

Vervangingselementen en vervangingspatronen

Vervangingen zijn de enige speciale constructies die worden herkend in een vervangingspatroon. Geen van de andere reguliere expressietaalelementen, waaronder escapes voor tekens en de punt (.), die overeenkomt met een willekeurig teken, worden ondersteund. Op dezelfde manier worden vervangende taalelementen alleen herkend in vervangingspatronen en zijn ze nooit geldig in reguliere expressiepatronen.

Het enige teken dat in een normaal expressiepatroon of in een vervanging kan worden weergegeven, is het $ teken, hoewel het in elke context een andere betekenis heeft. In een patroon voor reguliere expressies $ is dit een anker dat overeenkomt met het einde van de tekenreeks. In een vervangingspatroon $ wordt het begin van een vervanging aangegeven.

Notitie

Gebruik een backreference voor functionaliteit die vergelijkbaar is met een vervangend patroon binnen een reguliere expressie. Zie Backreference Constructs voor meer informatie over backreferences.

Een genummerde groep vervangen

Het $numerieke taalelement bevat de laatste subtekenreeks die overeenkomt met de groep voor het vastleggen van getallen in de vervangende tekenreeks, waarbij getal de index van de vastleggende groep is. Het vervangingspatroon $1 geeft bijvoorbeeld aan dat de overeenkomende subtekenreeks moet worden vervangen door de eerste vastgelegde groep. Zie Groeperingsconstructies voor meer informatie over genummerde opnamegroepen.

Alle cijfers die volgen $ , worden geïnterpreteerd als behorend tot de nummergroep . Als dit niet uw bedoeling is, kunt u in plaats daarvan een benoemde groep vervangen. U kunt bijvoorbeeld de vervangende tekenreeks gebruiken in plaats van $11 de vervangende tekenreeks ${1}1 te definiëren als de waarde van de eerste vastgelegde groep, samen met het getal '1'. Zie Een benoemde groep vervangen voor meer informatie.

Het vastleggen van groepen die niet expliciet toegewezen namen zijn met behulp van de (?<naamsyntaxis>) , worden genummerd van links naar rechts, beginnend bij één. Benoemde groepen worden ook van links naar rechts genummerd, beginnend bij één groter dan de index van de achternaamgroep. In de reguliere expressie (\w)(?<digit>\d)is de index van de digit benoemde groep bijvoorbeeld 2.

Als getal geen geldige vastleggende groep opgeeft die is gedefinieerd in het reguliere expressiepatroon, $wordt getal geïnterpreteerd als een letterlijke tekenreeks die wordt gebruikt om elke overeenkomst te vervangen.

In het volgende voorbeeld wordt de $getalvervanging gebruikt om het valutasymbool van een decimale waarde te verwijderen. Hiermee worden valutasymbolen verwijderd die aan het begin of einde van een monetaire waarde zijn gevonden en worden de twee meest voorkomende decimale scheidingstekens ('. en ',') herkend.

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

Het reguliere expressiepatroon \p{Sc}*(\s?\d+[.,]?\d*)\p{Sc}* wordt gedefinieerd zoals wordt weergegeven in de volgende tabel.

Patroon Beschrijving
\p{Sc}* Kom overeen met nul of meer valutasymbooltekens.
\s? Kom overeen met nul of één spatietekens.
\d+ Kom overeen met een of meer decimale cijfers.
[.,]? Kom overeen met nul of één punt of komma.
\d* Kom overeen met nul of meer decimale cijfers.
(\s?\d+[.,]?\d*) Koppel een witruimte gevolgd door een of meer decimale cijfers, gevolgd door nul of één punt of komma, gevolgd door nul of meer decimale cijfers. Dit is de eerste opnamegroep. Omdat het vervangingspatroon is $1, vervangt de aanroep van de Regex.Replace methode de volledige overeenkomende subtekenreeks door deze vastgelegde groep.

Een benoemde groep vervangen

Het ${naamtaalelement} vervangt de laatste subtekenreeks die overeenkomt met de naam die de groep vastlegt, waarbij de naam de naam is van een vastleggende groep die is gedefinieerd door het(?< naamtaalelement>). Zie Groeperingsconstructies voor meer informatie over benoemde vastleggen van groepen.

Als de naam geen geldige benoemde vastleggende groep opgeeft die is gedefinieerd in het reguliere expressiepatroon, maar uit cijfers bestaat, ${wordt de naam} geïnterpreteerd als een genummerde groep.

Als de naam geen geldige benoemde vastleggende groep of een geldige genummerde vastleggende groep opgeeft die is gedefinieerd in het reguliere expressiepatroon, ${wordt de naam} geïnterpreteerd als een letterlijke tekenreeks die wordt gebruikt om elke overeenkomst te vervangen.

In het volgende voorbeeld wordt de ${naam} vervangen om het valutasymbool van een decimale waarde te verwijderen. Hiermee worden valutasymbolen verwijderd die aan het begin of einde van een monetaire waarde zijn gevonden en worden de twee meest voorkomende decimale scheidingstekens ('. en ',') herkend.

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

Het reguliere expressiepatroon \p{Sc}*(?<amount>\s?\d[.,]?\d*)\p{Sc}* wordt gedefinieerd zoals wordt weergegeven in de volgende tabel.

Patroon Beschrijving
\p{Sc}* Kom overeen met nul of meer valutasymbooltekens.
\s? Kom overeen met nul of één spatietekens.
\d+ Kom overeen met een of meer decimale cijfers.
[.,]? Kom overeen met nul of één punt of komma.
\d* Kom overeen met nul of meer decimale cijfers.
(?<amount>\s?\d[.,]?\d*) Een witruimte, gevolgd door een of meer decimale cijfers, gevolgd door nul of één punt of komma, gevolgd door nul of meer decimale cijfers. Dit is de vastleggende groep met de naam amount. Omdat het vervangingspatroon is ${amount}, vervangt de aanroep van de Regex.Replace methode de volledige overeenkomende subtekenreeks door deze vastgelegde groep.

Een $-teken vervangen

Met $$ de vervanging wordt een letterlijk '$'-teken in de vervangen tekenreeks ingevoegd.

In het volgende voorbeeld wordt het object gebruikt om het NumberFormatInfo valutasymbool van de huidige cultuur en de plaatsing ervan in een valutatekenreeks te bepalen. Vervolgens worden zowel een normaal expressiepatroon als een vervangend patroon dynamisch gebouwd. Als het voorbeeld wordt uitgevoerd op een computer waarvan de huidige cultuur en-US is, wordt het reguliere expressiepatroon \b(\d+)(\.(\d+))? en het vervangende patroon gegenereerd $$ $1$2. Het vervangende patroon vervangt de overeenkomende tekst door een valutasymbool en een spatie gevolgd door de eerste en tweede vastgelegde groepen.

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("{0} --> {1}", 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

Het reguliere expressiepatroon \b(\d+)(\.(\d+))? wordt gedefinieerd zoals wordt weergegeven in de volgende tabel.

Patroon Beschrijving
\b Begin de overeenkomst aan het begin van een woordgrens.
(\d+) Kom overeen met een of meer decimale cijfers. Dit is de eerste opnamegroep.
\. Komt overeen met een punt (het decimaalteken).
(\d+) Kom overeen met een of meer decimale cijfers. Dit is de derde groep die vastlegt.
(\.(\d+))? Kom overeen met nul of één exemplaar van een punt, gevolgd door een of meer decimale cijfers. Dit is de tweede vastleggende groep.

De volledige overeenkomst vervangen

De $& vervanging omvat de volledige overeenkomst in de vervangende tekenreeks. Vaak wordt deze gebruikt om een subtekenreeks toe te voegen aan het begin of einde van de overeenkomende tekenreeks. Het vervangende patroon voegt bijvoorbeeld ($&) haakjes toe aan het begin en einde van elke overeenkomst. Als er geen overeenkomst is, heeft de $& vervanging geen effect.

In het volgende voorbeeld wordt de $& vervanging gebruikt om aanhalingstekens toe te voegen aan het begin en einde van boektitels die zijn opgeslagen in een tekenreeksmatrix.

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"

Het reguliere expressiepatroon ^(\w+\s?)+$ wordt gedefinieerd zoals wordt weergegeven in de volgende tabel.

Patroon Beschrijving
^ Start de overeenkomst aan het begin van de invoertekenreeks.
(\w+\s?)+ Komt overeen met het patroon van een of meer woordtekens gevolgd door nul of één spatieteken één of meer keren.
$ Komt overeen met het einde van de invoertekenreeks.

Het "$&" vervangende patroon voegt een letterlijk aanhalingsteken toe aan het begin en einde van elke overeenkomst.

De tekst vervangen vóór de overeenkomst

De $` vervanging vervangt de overeenkomende tekenreeks door de volledige invoertekenreeks vóór de overeenkomst. Dat wil gezegd, wordt de invoertekenreeks gedupliceerd tot aan de overeenkomst terwijl de overeenkomende tekst wordt verwijderd. Alle tekst die volgt op de overeenkomende tekst, wordt ongewijzigd in de resultaattekenreeks. Als er meerdere overeenkomsten in een invoertekenreeks voorkomen, wordt de vervangende tekst afgeleid van de oorspronkelijke invoertekenreeks in plaats van de tekenreeks waarin tekst is vervangen door eerdere overeenkomsten. (In het voorbeeld ziet u een afbeelding.) Als er geen overeenkomst is, heeft de $` vervanging geen effect.

In het volgende voorbeeld wordt het patroon reguliere expressie \d+ gebruikt om een reeks van een of meer decimale cijfers in de invoertekenreeks te vinden. De vervangende tekenreeks $` vervangt deze cijfers door de tekst die voorafgaat aan de overeenkomst.

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("   {0} at position {1}", match.Value, match.Index);

      Console.WriteLine("Input string:  {0}", 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

In dit voorbeeld bevat de invoerreeks "aa1bb2cc3dd4ee5" vijf overeenkomsten. In de volgende tabel ziet u hoe de $` vervanging ervoor zorgt dat de engine voor reguliere expressies elke overeenkomst in de invoertekenreeks vervangt. Ingevoegde tekst wordt vetgedrukt weergegeven in de resultatenkolom.

Vergelijken Position Tekenreeks vóór overeenkomst Resultaattekenreeks
1 2 Aa aa aabb2cc3dd4ee5
2 5 aa1bb aaaabb aa1bbcc3dd4ee5
3 8 aa1bb2cc aaaabbaa1bbccaa1bb2ccdd4ee5
4 11 aa1bb2cc3ddd aaaabbaa1bbccaa1bb2ccddaa1bb2cc3ddee5
5 14 aa1bb2cc3dd4ee aaaabbaa1bbccaa1bb2ccddaa1bb2cc3ddeeaa1bb2cc3ddd4ee

De tekst vervangen na de overeenkomst

De $' vervanging vervangt de overeenkomende tekenreeks door de volledige invoertekenreeks na de overeenkomst. Dat wil gezegd, wordt de invoertekenreeks na de overeenkomst gedupliceerd tijdens het verwijderen van de overeenkomende tekst. Alle tekst die voorafgaat aan de overeenkomende tekst, wordt ongewijzigd in de resultaattekenreeks. Als er geen overeenkomst is, heeft de $' vervanging geen effect.

In het volgende voorbeeld wordt het patroon reguliere expressie \d+ gebruikt om een reeks van een of meer decimale cijfers in de invoertekenreeks te vinden. De vervangende tekenreeks $' vervangt deze cijfers door de tekst die volgt op de overeenkomst.

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("   {0} at position {1}", match.Value, match.Index);
      Console.WriteLine("Input string:  {0}", 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

In dit voorbeeld bevat de invoerreeks "aa1bb2cc3dd4ee5" vijf overeenkomsten. In de volgende tabel ziet u hoe de $' vervanging ervoor zorgt dat de engine voor reguliere expressies elke overeenkomst in de invoertekenreeks vervangt. Ingevoegde tekst wordt vetgedrukt weergegeven in de resultatenkolom.

Vergelijken Position Tekenreeks na overeenkomst Resultaattekenreeks
1 2 bb2cc3dd4ee5 aabb2cc3dd4ee5bb2cc3dd4ee5
2 5 cc3dd4ee5 aabb2cc3dd4ee5bbcc3dd4ee5cc3dd4ee5
3 8 dd4ee5 aabb2cc3dd4ee5bbcc3dd4ee5ccdd4ee5dd4ee5
4 11 ee5 aabb2cc3dd4ee5bbcc3dd4ee5ccd4ee5ddee5ee5
5 14 String.Empty aabb2cc3dd4ee5bbcc3dd4ee5ccd4ee5de5dee

De laatst vastgelegde groep vervangen

De $+ vervanging vervangt de overeenkomende tekenreeks door de laatst vastgelegde groep. Als er geen vastgelegde groepen zijn of als de waarde van de laatst vastgelegde groep is, heeft String.Emptyde $+ vervanging geen effect.

In het volgende voorbeeld worden dubbele woorden in een tekenreeks geïdentificeerd en wordt de $+ vervanging gebruikt om ze te vervangen door één exemplaar van het woord. De RegexOptions.IgnoreCase optie wordt gebruikt om ervoor te zorgen dat woorden die verschillen in hoofdletters, maar die anders identiek zijn, worden beschouwd als duplicaten.

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.

Het reguliere expressiepatroon \b(\w+)\s\1\b wordt gedefinieerd zoals wordt weergegeven in de volgende tabel.

Patroon Beschrijving
\b Begin de overeenkomst bij een woordgrens.
(\w+) Komt overeen met een of meer woordtekens. Dit is de eerste opnamegroep.
\s Overeenkomst met een spatieteken.
\1 Komt overeen met de eerste vastgelegde groep.
\b Beëindig de overeenkomst op een woordgrens.

De volledige invoertekenreeks vervangen

De $_ vervanging vervangt de overeenkomende tekenreeks door de hele invoertekenreeks. Dat wil gezegd, wordt de overeenkomende tekst verwijderd en vervangen door de hele tekenreeks, inclusief de overeenkomende tekst.

Het volgende voorbeeld komt overeen met een of meer decimale cijfers in de invoertekenreeks. Hierbij wordt gebruikgemaakt van de $_ vervanging om deze te vervangen door de volledige invoertekenreeks.

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:          {0}", input);
      Console.WriteLine("String with substitution: {0}",
                        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

In dit voorbeeld bevat de invoerreeks "ABC123DEF456" twee overeenkomsten. In de volgende tabel ziet u hoe de $_ vervanging ervoor zorgt dat de engine voor reguliere expressies elke overeenkomst in de invoertekenreeks vervangt. Ingevoegde tekst wordt vetgedrukt weergegeven in de resultatenkolom.

Vergelijken Position Vergelijken Resultaattekenreeks
1 3 123 ABCABC123DEF456DEF456
2 5 456 ABCABC123DEF456DEF ABC123DEF456

Zie ook