2016-12-06 57 views
-1

我有一个包含下面的文本块大报告:更简洁的正则表达式

$S Cal V1 
1 1.000  353.2 20.0 47 
2 4.000  179.4 19.9 95 
3 8.000  -51.5 20.0 35 

我试图让三个单独的表达式来拉出第二列中的数字。标题($ S Cal V1)将保持不变,但除第一列中的数字外,所有数字均可能发生变化。

这是我目前的混乱。我知道如果可以凝聚,但我希望有更聪明的东西。

\$S Cal V1\n1\s*(\d+\.\d+) 
\$S Cal V1\n1\s*\d+\.\d+\s*\d+\.\d+\s\d+\.\d+\s*\d+\n2\s*(\d+\.\d+) 
\$S Cal V1\n1\s*\d+\.\d+\s*\d+\.\d+\s\d+\.\d+\s*\d+\n2\s*\d+\.\d+\s*\d+\.\d+\s\d+\.\d+\s*\d+\n3\s*(\d+\.\d+) 

任何想法,将不胜感激!

+0

只需使用的最后一个表达式,并把捕捉组围绕第2号每排。然后你可以一次得到所有3个号码。 – Barmar

+1

你使用什么工具/语言? –

+0

不幸的是,我需要为我正在使用的软件提供三个单独的表达式。它是一种从仪器捕获信息的实验室软件。 – macaday

回答

0

它看起来数据的精度是正常的。

use\d\.\d{3} //cleverer :)