2010-07-14 2 views
14

Почему следующий код результата в:Как найти несколько случаев с регулярными выражениями?

был 1 результатов 'в'

и не:

там было 3 матча за 'в'

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

ответ

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 возвращает первый матч, см. this, как получить остальное.

Вместо этого вы должны использовать Matches. Тогда вы могли бы использовать:

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

Regex.Match(String, String)

Поиски указанную входную строку для первого вхождения указанного регулярного выражения.

Используйте вместо этого Regex.Matches(String, String).

Ищет указанную строку ввода для всех вхождений указанного регулярного выражения.

1

Вы должны использовать Regex.Matches вместо Regex.Match, если хотите возвратить несколько совпадений.

Смежные вопросы