Регулярное выражение для сопоставления с цифрой в строке - PullRequest
2 голосов
/ 11 мая 2010

У меня будет другой тип строки (строка не будет иметь фиксированный формат, они будут отличаться каждый раз) из них я хочу удалить определенную подстроку. Как строка может быть

OPTIDX 26FEB2009 NIFTY CE 2500
OPTIDX NIFTY 30 Jul 2009 4600.00 PE
OPTSTK ICICIBANK 30 Jul 2009 700.00 PA

Я хочу извлечь Rs (цифру) из этой строки и сохранить ее в одной переменной, а затем в этой строке не должно быть Rs (цифра).

Каким должно быть это регулярное выражение?

EDIT

private string ExtractingRupeesFromString(String str)
{
    Match match = Regex.Match(cellRecord, @"(\d+(?:\.\d+)?)\D*$");
    return match.Value.ToString();
}

for(int i=0;i<datagridview1.Rows.Count;i++)
{
    datagridview1["Rs",i].Value=ExtractingRupeesFromString(datagridview1["ScriptName",i].Value.ToString());
}

Ответы [ 3 ]

2 голосов
/ 11 мая 2010

Если вы не хотите извлекать только ['2500', '4600.00', '700.00'], вы можете использовать следующее регулярное выражение с включенным флагом MULTILINE

@"([+-]?\d+(?:\.\d+)?)\D*$"

Редактировать : добавлены необязательные [+ -] и некоторые коды C #

string s = @"
OPTIDX 26FEB2009 NIFTY CE 2500
OPTIDX NIFTY 30 Jul 2009 4600.00 PE
OPTSTK ICICIBANK 30 Jul 2009 700.00 PA
";
Regex re = new Regex(@"([+-]?\d+(?:\.\d+)?)\D*$",RegexOptions.Multiline);
foreach (Match a in re.Matches(s)){
    System.Console.WriteLine(a.Groups[1]);
}

//2500
//4600.00
//700.00

Редактировать :

Вы можете изменить

return match.Value.ToString();

до

return match.Groups[1].ToString();

чтобы вернуть только номерную часть.

1 голос
/ 11 мая 2010

Как это

Match match = Regex.Match(str, @"[-+]?[0-9]*\.?[0-9]+");
Rupees=str.Substring(match.Index,match.Length);

Это нормально? Пожалуйста, проверьте регулярное выражение.

0 голосов
/ 11 мая 2010

Я согласен с jack30lena. Это можно легко сделать с помощью регулярного выражения.

например:

Regex blabla = new Regex(@"([^0-9]*(?<number>[0-9])+)*");
MatchCollection matches = blabla.matches("OPTIDX 26FEB2009 NIFTY CE 2500");
foreach(Match m in matches)
{
string number = m.Groups["number"].Value;
//do something with the match...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...