使用文本中的指数提取双数值

时间:2014-05-03 13:18:21

标签: c# regex string-parsing

如何从具有更多字符的字符串中提取一些可能具有指数的double类型?

例如从

中提取56.8671311035e-06
  

“这是一个数字在56.8671311035e-06内的字符串,字符串在这里继续”

我想可以使用正则表达式完成,但我对它们的了解非常有限。

2 个答案:

答案 0 :(得分:6)

是的,我会说正则表达式是你的朋友:

var match = Regex.Match(input, @"[0-9.]+e[-+][0-9]+");

或者您可以使用以下内容防止匹配多个小数点(最后一个将被视为“正确”小数点):

@"\b[0-9]+(.[0-9]+)e[-+][0-9]+\b"

编辑:这是一个更完整的版本,允许使用可选的指数,并且还允许小数点位于数字的 start

@"[\d]*\.?[\d]+(e[-+][\d]+)?"

答案 1 :(得分:3)

你可以这样做:

string test = "this is a string with a number inside 56.8671311035e-06 and the string continues here";
string expoNum = Regex.Match(test,@"[\d.]+e[-+]?\d+").Value;