2009-11-09 3 views

Répondre

2

Utilisez un groupe de capture nommé:

Regex r = new Regex("<(?<number>.*?)>"); 
Match m = r.Match(input); 
if (m.Success) 
{ 
    string number = m.Groups["number"].Value; 
    // whatever you need to do with it... 
} 

Ou sans nom, si vous préférez:

Regex r = new Regex("<(.*?)>"); 
Match m = r.Match(input); 
if (m.Success) 
{ 
    string number = m.Groups[1].Value; 
    // whatever you need to do with it... 
} 
4

Utilisation lookaheads and lookbehinds:

(?<=<)\d+(?=>) 

Fondamentalement, cela signifie: trouver une séquence d'un ou plusieurs chiffres qui est précédé d'un . < et suivi d'un > vous pouvez bien sûr le faire:

<(\d+)> 

parce que les parenthèses marquent un groupe de capture et vous obtenez juste ce groupe plutôt que tout le match Quelque chose comme:.

Regex regex = new Regex("<(\\d+)>"); 
Match match = regex.Match("Doe, John\" <15553775555>"); 
if (match.Success) 
{ 
    String number = match.Groups[1].Value; 
    Console.WriteLine("Found " + number); 
} 
else 
{ 
    Console.WriteLine("No match found"); 
} 
1

Récupère la sous-correspondance fournie par les parens. Tout dépend de ce moteur regex que vous utilisez à la syntaxe, mais 1 $ œuvres en .net je crois ...

Questions connexes