2010-07-14 11 views
14

Warum gibt das folgende Codeergebnis in:Wie finden Sie mehrere Vorkommen mit Regex-Gruppen?

es 3 Treffer für war 'der'

:

es 1 Treffer für 'die'

und nicht war

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(); 
     } 
    } 
} 

Antwort

29
string text = "C# is the best language there is in the world."; 
string search = "the"; 
MatchCollection matches = Regex.Matches(text, search); 
Console.WriteLine("there was {0} matches for '{1}'", matches.Count, search); 
Console.ReadLine(); 
2

Match gibt die erste Übereinstimmung zurück, siehe this für den Rest.

Sie sollten stattdessen Matches verwenden. Dann könnten Sie verwenden:

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

Sie sollten Regex.Matches statt Regex.Match verwenden, wenn Sie mehrere Übereinstimmungen zurückgeben möchten.

Verwandte Themen