C#:
Reguliere expressies gebruiken
Hoe te:
Laten we kijken naar het matchen, vervangen en splitsen van strings met regex in C#.
Een telefoonnummer matchen:
using System;
using System.Text.RegularExpressions;
public class Example
{
public static void Main()
{
string patroon = @"\b\d{3}[-.]?\d{3}[-.]?\d{4}\b";
string tekst = "Bel me op 123-456-7890 of 987.654.3210.";
MatchCollection matches = Regex.Matches(tekst, patroon);
foreach (Match match in matches)
Console.WriteLine(match.Value);
}
}
Uitvoer:
123-456-7890
987.654.3210
Nieuwe regels vervangen:
using System;
using System.Text.RegularExpressions;
public class Example
{
public static void Main()
{
string tekst = "Eerste regel.\nTweede regel.\nDerde regel.";
string patroon = @"\n";
string vervanging = " ";
string resultaat = Regex.Replace(tekst, patroon, vervanging);
Console.WriteLine(resultaat);
}
}
Uitvoer:
Eerste regel. Tweede regel. Derde regel.
Een CSV splitsen:
using System;
using System.Text.RegularExpressions;
public class Example
{
public static void Main()
{
string tekst = "een,twee,drie,vier";
string patroon = @",";
string[] deelStrings = Regex.Split(tekst, patroon);
foreach (string match in deelStrings)
{
Console.WriteLine(match);
}
}
}
Uitvoer:
een
twee
drie
vier
Diepgaande duik
Regex bestaat sinds de jaren 50, dankzij wiskundige Stephen Kleene. Alternatieven voor regex omvatten stringmethoden zoals Contains
, IndexOf
, StartsWith
, enz., maar ze zijn minder krachtig voor complexe patronen.
Wat implementatie betreft, de Regex
klasse in C# bevindt zich in System.Text.RegularExpressions
. Het maakt gebruik van backtracking-algoritmen voor patroonherkenning. Regex-bewerkingen kunnen kostbaar zijn; gebruik ze zorgvuldig om prestatievermindering te voorkomen.
Zie ook
- Microsoft’s Regex Documentatie
- Regex Tester & Debugger
- Beheersing van Reguliere Expressies door Jeffrey Friedl. Opmerking van Robert: zo heb ik Regexes geleerd. Ik had het gevoel dat ik ze echt begreep na het lezen van het boek. En tegenwoordig, gebruik ik de “Regex Tester & Debugger”, hierboven vermeld, wanneer ik er een moet debuggen.