.NET正则表达式查找数字并将数字分组

时间:2009-10-26 03:56:34

标签: c# .net regex

我对.NET正则表达式有疑问。

现在我在列表中有几个字符串,字符串中可能有一个数字,而字符串的其余部分是相同的,就像

string[] strings = {"var1", "var2", "var3", "array[0]", "array[1]", "array[2]"}

我希望结果是{"var$i" , "array[$i]"},并且我有记录匹配数字的数字记录,如字典

var$i {1,2,3} & 
array[$i] {0, 1 ,2}

我定义了像这样的正则表达式

var numberReg = new Regex(@".*(<number>\d+).*");
foreach(string str in strings){
  var matchResult = numberReg.Match(name);
  if(matchResult.success){
    var number = matchResult.Groups["number"].ToString();
    //blablabla

但是这里的正则表达式似乎不起作用(从不匹配成功),我是正则表达式的新手,我想尽快解决这个问题。

2 个答案:

答案 0 :(得分:1)

试试这个正则表达式:

(?<number>\d+)

答案 1 :(得分:1)

我不清楚你究竟想要什么。但是,在查看代码时,我假设您必须以某种方式从值列表中提取数字(可能是变量名称)。试试这个:

// values
string[] myStrings = { "var1", "var2", "var3", "array[0]", "array[1]", "array[2]" };

// matches
Regex x = new Regex(@"(?<pre>\w*)(?<number>\d+)(?<post>\w*)");
MatchCollection matches = x.Matches(String.Join(",", myStrings));

// get the numbers
foreach (Match m in matches)
{
    string number = m.Groups["number"].Value;                
    ...
}