如何在C#中使用Regex检索所选文本?
如何在C#中使用Regex检索所选文本?
我正在寻找与此Perl代码等效的C#代码:
$indexVal = 0; if($string =~ /Index: (\d*)/){$indexVal = $1;}
int indexVal = 0; Regex re = new Regex(@"Index: (\d*)") Match m = re.Match(s) if(m.Success) indexVal = int.TryParse(m.Groups[1].toString());
我可能有错误的组号,但你应该能够从这里弄清楚。
我认为帕特里克坚持这个 – 我唯一的建议就是记住命名的正则表达式组也存在,所以你不必使用数组索引号。
Regex.Match(s, @"Index (?\d*)").Groups["num"].Value
虽然意见各不相同 ,但我发现正则表达式在这方面也更具可读性。
你会想要使用匹配的组,所以像…
Regex MagicRegex = new Regex(RegexExpressionString); Match RegexMatch; string CapturedResults; RegexMatch = MagicRegex.Match(SourceDataString); CapturedResults = RegexMatch.Groups[1].Value;
那就是
int indexVal = 0; Regex re = new Regex(@"Index: (\d*)"); Match m = re.Match(s); if (m.Success) indexVal = m.Groups[1].Index;
你也可以命名为group(这里我也跳过了regexp的编译)
int indexVal = 0; Match m2 = Regex.Match(s, @"Index: (?\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); }