Pregunta

¿Cómo se puede recuperar el texto seleccionado usar Regex en C#?

Estoy en busca de código C# que es equivalente a este código en Perl:

$indexVal = 0;
if($string =~ /Index: (\d*)/){$indexVal = $1;}
¿Fue útil?

Solución

int indexVal = 0;
Regex re = new Regex(@"Index: (\d*)")
Match m = re.Match(s)

if(m.Success)
  indexVal = int.TryParse(m.Groups[1].toString());

Yo podría tener el número de grupo de malo, pero usted debería ser capaz de averiguar a partir de aquí.

Otros consejos

Creo que Patrick clavado ésta, mi única sugerencia es recordar que el nombre de regex grupos existen, también, así que usted no han el uso de números de índice de matriz.

Regex.Match(s, @"Index (?<num>\d*)").Groups["num"].Value

Me parece la expresión regular es un poco más legible de esta manera, a pesar de las opiniones varían...

Usted querrá utilizar la coincidencia de grupos, algo así como...

Regex MagicRegex = new Regex(RegexExpressionString);
Match RegexMatch;
string CapturedResults;

RegexMatch = MagicRegex.Match(SourceDataString);
CapturedResults = RegexMatch.Groups[1].Value;

Que sería

int indexVal = 0;
Regex re = new Regex(@"Index: (\d*)");
Match m = re.Match(s);

if (m.Success)
    indexVal = m.Groups[1].Index;

Usted puede también el nombre de su grupo (aquí también he omitido la compilación de la regexp)

int indexVal = 0;
Match m2 = Regex.Match(s, @"Index: (?<myIndex>\d*)");

if (m2.Success)
    indexVal = m2.Groups["myIndex"].Index;
int indexVal = 0;
Regex re = new Regex.Match(s, @"(<?=Index: )(\d*)");

if(re.Success)
{
  indexVal = Convert.ToInt32(re.Value);
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top