Creation
var regex = new Regex(@"d+", RegexOptions.None);
var commentedRegex = new Regex(@"
d # Any digit
[0-9] # With character class
", RegexOptions.IgnorePatternWhitespace);
RegexOptions.Compiled: Increased startup time for decreased execution time.
RegexOptions.IgnoreCase.
RegexOptions.ExplicitCapture: Only explicitly named/numbered groups are captured. (Skip the (?:…)).
RegexOptions.Multiline: ^ and $ match beginning and end of line.
RegexOptions.Singleline: . matches n.
Tes A Match
Match match = Regex.Match("1-22-333", @"(d+)-(d+)-(d+)(-d+)?");
IReadOnlyList<Group> groups = match.Groups;
Assert.Equal(5, groups.Count);
Assert.Equal("1-22-333", groups.First().Value);
Group one = match.Groups.Skip(1).First();
Assert.Equal("1", one.Value);
Group fours = match.Groups.Last();
Assert.False(fours.Success);
Multiple Named Matches
string pattern = @"(?<one>d+)-(?<two>d+)";
IReadOnlyList<Match> matches = Regex.Matches("1-22, 1-2", pattern);
Assert.Equal(2, matches.Count);
Match first = matches.First();
Assert.Equal("1-22", first.Value);
Match second = matches.Last();
Assert.Equal("1-2", second.Value);
IReadOnlyList<Group> groups = first.Groups;
Group one = groups.Skip(1).First();
Assert.Equal("one", one.Name);
Assert.Equal("1", one.Value);
Replace
Basic Usage
var regex = new Regex(@"(d)-(d+)");
var result = regex.Replace("1-22", "$1+$2");
Assert.Equal("1+22", result);
result = Regex.Replace("1", @"(?<amount>d+)", "$$ ${amount}");
Assert.Equal("$ 1", result);
Replace with Function
string input = "Hello World!";
string pattern = @"Hello";
var result = Regex.Replace(input, pattern, (Match m) => $"<b>{m.Value}</b>");
Assert.Equal("<b>Hello</b> World!", result);
Other Substitutions
$& : entire match
$` : before
$' : after
$+ : last captured group
$_ : entire input string