0

只需要匹配数字列的正则表达式。数字列的每一行可能包含也可能不包含小数点加减 sing 和字母“e”。此外,每列之间的空格数可能恰好不止一个。并且列数不固定。

我正在解析的文本的代表性样本。

  #B0 alphanumeric line 26_0000 abc
#B1  57 115 550.000000 270.000000 
#N 18
#Labels X Y  Something  Else Here
-16.3252 -11.205718    0 2.61836e-07 110
-16.1728 -10.90549    0 2.61836e-07 87 
-16.0228 -10.605516    0 2.61836e-07 50 
-15.8728 -10.305796    0 2.61836e-07 31
-15.7229 -10.005822    0 2.61836e-07 49 
-15.5727 -9.705594    0 2.51826e-07 4998
-15.4228 -9.40562     0 2.71836e-07 176

Some alphanumeric  -14.9729 is 24678   COM at -14.7531   
Sum = 147364  Ave.Mon./Time = 136117 
4

1 回答 1

2

我有点不清楚你到底在问什么,但至少让我指出你正确的方向......

你知道这个:

\d*(?:\.\d+)*

匹配十进制数。因此,您可以将其扩展为也匹配负数,如下所示:

-?\d*(?:\.\d+)*

然后您可以进一步扩展它以匹配末尾带有“e-...”的数字,如下所示:

-?\d*(?:\.\d+)*(?:e-\d+)?

最后,如果你想搜索一整行,其中只包含这样的数字,用空格分隔,你可以使用:

^(?:-?\d*(?:\.\d+)*(?:e-\d+)?\s*)*$
于 2013-07-25T14:25:38.103 回答