我将有一个不同类型的字符串(字符串不会有固定格式,它们每次都会不同)从它们我要删除一些特定的子字符串。像字符串一样可以
OPTIDX 26FEB2009 NIFTY CE 2500
OPTIDX NIFTY 30 Jul 2009 4600.00 PE
OPTSTK ICICIBANK 30 Jul 2009 700.00 PA
我想从这些字符串中提取Rs。(数字)并将其存储到一个变量中,然后在那些字符串中不应该有Rs。(数字)。
那应该是什么样的正则表达式?
修改
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());
}
答案 0 :(得分:2)
如果你不想仅提取['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 :(得分:1)
怎么样
Match match = Regex.Match(str, @"[-+]?[0-9]*\.?[0-9]+");
Rupees=str.Substring(match.Index,match.Length);
可以吗?请检查正则表达式。
答案 2 :(得分:0)
我同意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...
}