Regex.Matches
This C# method returns multiple Match
objects. It matches multiple instances of a pattern and returns a MatchCollection
.
Matches()
is useful for extracting values, based on a pattern, when many are expected. Often more than just one Match
can be found.
To start, this program uses an input string
that contains several words. Each one starts with the letter s. Next, we use Regex.Matches
on this string
.
foreach
on the MatchCollection
, and then on the result of the Captures property.Regex
, we need to loop over the Captures collection.string
. The Index
property tells us the character position of the capture.using System; using System.Text.RegularExpressions; class Program { static void Main() { // Input string. const string value = @"said shed see spear spread super"; // Get a collection of matches. MatchCollection matches = Regex.Matches(value, @"s\w+d"); // Use foreach-loop. foreach (Match match in matches) { foreach (Capture capture in match.Captures) { Console.WriteLine("Index={0}, Value={1}", capture.Index, capture.Value); } } } }Index=0, Value=said Index=5, Value=shed Index=20, Value=spread
Matches
, Match
With Regex.Matches
, we gather a group of matches (a MatchCollection
) which must be iterated over. If only one Match
is needed, Regex.Match
is simpler to use.
The Regex.Matches
method provides a way to match multiple times in a single input string
. You can then loop over these matches and their individual captures to get all the results.
Matches()
is similar to Regex.Match
. Doing this sort of text processing would be more cumbersome if you were to use string
class
methods.