2015-10-06 61 views
0

我有這個文本文件正則表達式返回浮數而無需高精度

1 3   10.1144881901   48.8578515599   340.2980957031   -3.9997586182   -2.0398821492   -56.6352938643 
2 1   10.1137751593   48.8575005060   401.4981384277   -11.7762306910   3.4075851669   -92.5498187137 

而且我有這樣的C#代碼讀取數字,我需要第5列,並更改值,那麼所有列保存到一個新的文本文件。

String pattern = @"(\d+)\t(\d+)\t\s+[-+]?(\d*[.])?\d+\t\s+[-+]?(\d*[.])?\d+\t\s+[-+]?(\d*[.])?\d+"; 
foreach (Match m in Regex.Matches(line, pattern)) 
{       
    string value = m.Groups[5].Value; 
} 

值字符串中包含的唯一的340代替340.2980957031 很奇怪的m.Groups [0]包含的所有數字,包括精度。

+0

現在它找不到任何行 –

+1

使用此參考,您應該能夠輕鬆地修復它:https://regex101.com/r/lD1wC7/31 –

+0

謝謝!我會嘗試 –

回答

0

我找到了解決辦法,這種表達包括浮點精度

(\d+)\t(\d+)\t\s+[-+]?([0-9]*\.[0-9]+|[0-9]+)\t\s+[-+]?([0-9]*\.[0-9]+|[0-9]+)\t\s+[-+]?([0-9]*\.[0-9]+|[0-9]+) 
1

什麼是正則表達式:

^([+-]?\d+(\.\d+)?\s+){4}(?<number>[+-]?\d+(\.\d+)?) 

DEMO

您可以通過

match.Groups["number"].Value 
訪問所有數字

十進制數字的模式是:[+-]?\d+(\.\d+)?由於正則表達式的貪婪它會捕獲所有數字。