我正在做一些数据清理工作,我必须使用(iText)将pdf文件转换为文本。我需要从解析后提取一些数据表。 (表格可以按任何顺序出现,因此无法逐行解析)。无论如何,我开始研究同样的正则表达式解决方案,我认为会更容易,但显然不适合我。
数据看起来像这样
Dummy Value Data
VAL1 VAL2 Mean Calc Calc2
(mf) (m) (rad) (rad) (rad/100m)
0.0 0.0 0.0 0.0 0.000
9224.0 9224.0 0.0 0.0 0.000
9928.0 9925.9 2.3 322.5 0.490
9885.0 9889.8 0.9 285.9 -0.953
5432.0 5432.5 3.3 95.4 -0.509
<newline>
<newline>
这与我想捕获的模式完全相同。最后2个新行标志着模式的结束。 我确实尝试过一些东西,但没有任何效果。我也可以分享我的正则表达式,但他们不工作。
答案 0 :(得分:0)
您可以使用find方法
你的正则表达式是
(?<VAL1>[-+]?\d+([.]\d+)?)\s+(?<VAL2>[-+]?\d+([.]\d+)?)\s+(?<Mean>[-+]?\d+([.]\d+)?)\s+(?<Calc>[-+]?\d+([.]\d+)?)\s+(?<Calc2>[-+]?\d+([.]\d+)?)
您的代码
Matcher m=Pattern.compile(aboveRegex).matcher();
while(m.find())
{
m.group("VAL1");
m.group("VAL2");
m.group("Mean");
m.group("Calc");
}
修改强>
匹配多个此类表格
([+-]?\d+([.]\d+)?( [+-]?\d+([.]\d+)?){4}(\r?\n))+(?=(\r?\n))
答案 1 :(得分:0)
尝试下一个正则表达式:
(\w+( +\w+)*)\r?\n(\w+( +\w+)*)\r?\n(\([\w/]+\)( \([\w/]+\))*)\r?\n((-?\d+\.\d+( -?\d+\.\d+)* *)\r?\n)*(?=(\r?\n){2})
<newline>
在正则表达式中为\r?\n
。