2009-10-26 2 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 

Но регулярное выражение, похоже, не работает (никогда не добивается успеха), я новичок в regex, и я хочу решить эту проблему как можно скорее.

+0

BTW, нет такого понятия, как регулярное выражение C#. C# - язык программирования. Структура - .NET, которая имеет регулярные выражения. –

+0

Вы должны взглянуть на «Регулятор» - отличный инструмент для изучения того, как писать регулярные выражения, а также упрощает создание ваших выражений. –

ответ

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;     
    ... 
} 
Смежные вопросы