有人可以解释为什么第一个正则表达式组中包含“1”而不是第二个吗?
Match match = Regex.Match("q10", @"(\w+)(\d+)");
//Ugh, Regex group indicies are 1-based not 0-based.
Console.WriteLine(match.Groups[1].Value); //Expected "q" got "q1"
Console.WriteLine(match.Groups[2].Value); //Expected "10" got "0"
答案 0 :(得分:2)
正则表达式贪婪地匹配,因此(\w+)
涵盖(\d+)
之前的尽可能多的内容。由于1
是一个单词字符,因此\w
会在第一个组中捕获它。
您可以使用以下方式捕捉您想要的方式:
Match match = Regex.Match("q10", @"([a-z]+)(\d+)");
答案 1 :(得分:2)
\w
匹配alpha 数字字符(和下划线)。
您想要[A-Za-z]