Question: Why does the following code result in:

> 
> there was 1 matches for 'the'
> 
> 
> 

and not:

> 
> there was 3 matches for 'the'
> 
> 
> 

```
using System;
using System.Text.RegularExpressions;

namespace TestRegex82723223
{
    class Program
    {
        static void Main(string[] args)
        {
            string text = "C# is the best language there is in the world.";
            string search = "the";
            Match match = Regex.Match(text, search);
            Console.WriteLine("there was {0} matches for '{1}'", match.Groups.Count, match.Value);
            Console.ReadLine();
        }
    }
}

```

Answer: 
[Regex.Match(String, String)](http://msdn.microsoft.com/en-us/library/0z2heewz.aspx) 

> 
> Searches the specified input string for the first occurrence of the specified regular expression.
> 
> 
> 

Use [Regex.Matches(String, String)](http://msdn.microsoft.com/en-us/library/b9712a7w.aspx) instead.

> 
> Searches the specified input string for all occurrences of a specified regular expression.
> 
> 
>
`Match` returns the *first* match, see [this](http://msdn.microsoft.com/en-us/library/twcw2f1c.aspx) for how to get the rest.

You should use `Matches` instead. Then you could use:

```
MatchCollection matches = Regex.Matches(text, search);
Console.WriteLine("there were {0} matches", matches.Count);

```