2009-10-26 41 views
0

我有一個關於.NET正則表達式的問題。.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 

但是這裏的正則表達式似乎不起作用(從來沒有匹配成功),我是新的正則表達式,我想盡快解決這個問題。

+0

順便說一句,沒有這樣的東西作爲一個C#正則表達式。 C#是編程語言。框架是.NET,它具有正則表達式。 – 2009-10-26 04:40:40

+0

你應該看一下'Regulator',它是學習如何編寫正則表達式的好工具,並且可以更容易地創建表達式。 – 2009-10-26 05:16:18

回答

1

試試這個作爲你的正則表達式:

(?<number>\d+) 
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;     
    ... 
}