正则表达式使用Java帮助多行

时间:2014-11-03 21:17:42

标签: java regex

我需要解析一个BUFKIT天气模型文件,它确实是一个很长的文件。

PRES TMPC TMWC DWPC THTE DRCT SKNT OMEG
CFRL HGHT
995.10 4.64 3.24 1.45 290.15 360.00 0.58 -0.10
0.00 292.82
990.40 5.04 2.18 -1.95 288.49 75.96 4.80 -0.10
0.00 331.43
985.70 6.44 2.36 -3.77 289.24 109.86 7.44 -0.10
0.00 370.34
976.00 8.64 3.43 -4.12 292.23 142.13 8.86 -0.10
0.00 410.44

在文件中,我真的只关心数字线(分为两行)。例如,我想解析:

995.10 4.64 3.24 1.45 290.15 360.00 0.58 -0.10
0.00 292.82

我可以使用以下方法找到单个小数:

-?[0-9]\d*(\.\d+)?

我无法弄清楚如何捕获所有10个,包括换行符。

那么什么是我可以用来解析所有10个的表达式?

编辑:还有一些与某些模式冲突的行。这些都需要忽略:

722190 141106/2300 1013.10 981.20 17.94 292.30 0.00 55.00
1.68 0.00 290.50 0.00 0.00 27.00
0.00 3.90 -1.70 0.06 0.02 17.44
11.63 0.00 0.00 0.00 1.00 18.20
-4.80 -26.00 -0.02 60.00 979.00 0.19
15.80
722190 141107/0000 1014.00 981.90 16.44 291.50 0.00 56.00
0.69 0.00 290.50 0.00 0.00 0.00
0.00 4.40 -2.00 0.02 0.02 15.74
9.01 0.00 0.00 0.00 1.00 19.60
-5.50 -104.50 -0.04 60.00 951.30 20.00
11.94

2 个答案:

答案 0 :(得分:1)

更新: 根据发布的数据,使用此模式w / gm选项

^((?:-?\d+(?:\.\d+)? ){7}(?:-?\d+(?:\.\d+)?(?:\r?\n))(?:-?\d+(?:\.\d+)? )(?:-?\d+(?:\.\d+)?(?=\r?\n|$)))

Demo

答案 1 :(得分:1)

您可以使用此正则表达式使用MULTILINE标志分别捕获每一行:

^((?:-?\d+(?:\.\d+)?\s+){9}-?\d+(?:\.\d+)?)(?=\r?\n|\z)

RegEx Demo

一旦分隔出来,您可以按空格String#split来获取单个单元格值。