2016-12-06 167 views
0

您好我需要一個正則表達式一些幫助:正則表達式,捕獲組

我需要什麼:

  • 只使用與d開始行。
  • d後第一個小數應該在第一組中。
  • 小數點後第二個小數點應該在第二個小組
  • 在前面與空間中的所有以下小數應該被添加到第三組

這是一些示例內容:

test 0.000000 1.05024905 0.00000000 
test 0.000000 1.05024905 0.00000000 
d 0.000000 1.05024905 0.00000000 
d 22.042142 1.63673887 10.93467607 79.06532393 100.93467607 169.06532393 190.93467607 259.06532393 280.93467607 349.06532393 
d 30.573646 1.98939080 45.00000000 135.00000000 225.00000000 315.00000000 
d 35.000000 1.89275124 0.00000000 90.00000000 180.00000000 270.00000000 
d 38.591663 2.22368376 23.21666883 66.78333117 113.21666883 156.78333117 203.21666883 246.78333117 293.21666883 336.78333117 
d 42.456724 2.16349500 7.32782836 82.67217164 97.32782836 172.67217164 187.32782836 262.67217164 277.32782836 352.67217164 
d 90.000000 3.53392178 38.65670480 51.34329520 128.65670480 141.34329520 218.65670480 231.34329520 308.65670480 321.34329520 
d 90.000000 3.32645147 22.47120039 67.52879961 112.47120039 157.52879961 202.47120039 247.52879961 292.47120039 337.52879961 
d 90.000000 3.19196954 16.27363186 73.72636814 106.27363186 163.72636814 196.27363186 253.72636814 286.27363186 343.72636814 
d 90.000000 3.16746506 15.19498176 74.80501824 105.19498176 164.80501824 195.19498176 254.80501824 285.19498176 344.80501824 
d 90.000000 3.11573668 12.82369963 77.17630037 102.82369963 167.17630037 192.82369963 257.17630037 282.82369963 347.17630037 

我想使用它像以下:

string pattern = [email protected]"d +(?<{Grp1}>\-?[0-9]*\.[0-9]*) (?<{Grp2}>\-?[0-9]*\.[0-9]*) (?<{Grp3}>\-?[0-9]*\.[0-9]*)(.*)"; 

var matches = Regex.Matches(content, regexPattern); 
foreach (Match match in matches) 
{ 
    var group1 = match.Groups[Grp1]; 
    var group2 = match.Groups[Grp2]; 
    var group3 = match.Groups[Grp3]; 
    foreach (var capture in group3.Captures) 
    { 

    } 
} 

無法得到正確的正則表達式。

在此先感謝。

+0

'^ d(\ d + \ \ d +)(\ d + \ \ d +)$'是(*)。我想出了什麼。它很可能會改善很多,但是。 – ThePerplexedOne

+0

你需要以'd'開始的行,這就是爲什麼你用'a'開始你的模式的原因?這是不合邏輯的。 –

+0

對不起,錯字,調整... – daageu

回答

1
^d (\d+\.\d+) (\d+\.\d+)(.*)$ 

這是我想到的表達式,它很可能會改進。

值得注意的是,當你使用這個,你會想在你的表達式中使用MultiLine修飾符,這樣^匹配每一個新行的開始。

+0

正則表達式似乎是正常的,但我無法設法分裂成正確的組。 http://regexr.com/3eqir。我想要第三個組,將第一個2中的所有小數進行分組。 – daageu

+0

然後添加另一個捕獲組:'^ d((\ d + \。\ d +)(\ d + \。。d +)(。*))$' – ThePerplexedOne