正则表达式将最后一行与空行前的数字或单词匹配

时间:2016-05-31 22:01:30

标签: java regex

我有一个纯文本表格如下:

A lot of text and various tables which can all be different

SI Table - Total 
 Total

Heartburn  0.0
Regurg 14.3
ChestP 25.0
Cough n/a
Belch n/a
Other n/a
Vomiting n/a

some other stuff which can include 443.66 or 332 numbers

但这也可以是

SI Table - Total 
     Total
Cough n/a
Heartburn  0.0
Regurg 14.3
Chest Pain 25.0
Belch n/a
Other n/a
CHest Pain 0.34

因此,样本1的预期输出将是

SI Table - Total 
     Total

Heartburn  0.0
Regurg 14.3
ChestP 25.0
Cough n/a
Belch n/a
Other n/a
Vomiting n/a

我想从SI表中提取单个字符串到同一个表中最后一个症状的值。

唯一的模式是最后一个症状,值后面总是跟一个空行,但之后可能还有什么 - 包括一个非常相似的表。我试过了

 Pattern SAPDay2_pattern = Pattern.compile("SAP Table - Day1 .*(\\d+\\.\\d+|n\\/a)\\n\\n",Pattern.DOTALL);

但它不起作用。有人可以帮忙吗?

1 个答案:

答案 0 :(得分:2)

你可以试试这个正则表达式:

SI Table *- *Total\s+Total\s*(?:\n[A-Za-z]+\s+(?:\d+(?:\.\d+)?|n/a))+

RegEx Demo