2010-10-13 4 views
0

Я новичок в .NET и с трудом пытаюсь понять объект Regex.Использование названных групп в .NET Regex

То, что я пытаюсь сделать, находится ниже. Это псевдокод; Я не знаю фактического кода, который делает эту работу:

string pattern = ...; // has multiple groups using the Regex syntax <groupName> 

if (new Regex(pattern).Apply(inputString).HasMatches) 
{ 
    var matches = new Regex(pattern).Apply(inputString).Matches; 

    return new DecomposedUrl() 
    { 
     Scheme = matches["scheme"].Value, 
     Address = matches["address"].Value, 
     Port = Int.Parse(matches["address"].Value), 
     Path = matches["path"].Value, 
    }; 
} 

Что мне нужно изменить, чтобы этот код работал?

ответ

0

A Regex экземпляр на моей машине не имеет метода Apply. Я бы обычно делал что-то еще вот так:

var match=Regex.Match(input,pattern); 
if(match.Success) 
{ 
    return new DecomposedUrl() 
    { 
     Scheme = match.Groups["scheme"].Value, 
     Address = match.Groups["address"].Value, 
     Port = Int.Parse(match.Groups["address"].Value), 
     Path = match.Groups["path"].Value 
    }; 
} 
1

Нет метода Apply для Regex. Похоже, вы можете использовать некоторые собственные методы расширения, которые не отображаются. Вы также не показывали шаблон, который используете. Помимо этого, группы могут быть получены из Match, а не MatchCollection.

Regex simpleEmail = new Regex(@"^(?<user>[^@]*)@(?<domain>.*)$"); 
Match match = simpleEmail.Match("[email protected]"); 
String user = match.Groups["user"].Value; 
String domain = match.Groups["domain"].Value; 
Смежные вопросы