Java 创建多行正则表达式时遇到问题
我正在做一些数据清理工作,我必须使用(iText)将pdf文件转换成文本。我需要从解析的数据中提取一些数据表。(表可以以任何顺序出现,因此无法逐行分析)。无论如何,我开始研究正则表达式的解决方案,我认为这会更容易,但显然对我来说不是 数据如下所示Java 创建多行正则表达式时遇到问题,java,regex,Java,Regex,我正在做一些数据清理工作,我必须使用(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
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>
伪值数据
VAL1 VAL2平均Calc Calc2
(mf)(m)(rad)(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
这正是我想要捕捉的模式。最后两条新线标志着图案的结束。
我确实试过几件事,但都不管用。我也可以共享我的正则表达式,但它们不起作用。您可以使用find方法 你的正则表达式是
(?<VAL1>[-+]?\d+([.]\d+)?)\s+(?<VAL2>[-+]?\d+([.]\d+)?)\s+(?<Mean>[-+]?\d+([.]\d+)?)\s+(?<Calc>[-+]?\d+([.]\d+)?)\s+(?<Calc2>[-+]?\d+([.]\d+)?)
编辑 匹配多个这样的表
([+-]?\d+([.]\d+)?( [+-]?\d+([.]\d+)?){4}(\r?\n))+(?=(\r?\n))
请尝试下一个正则表达式:
(\w+( +\w+)*)\r?\n(\w+( +\w+)*)\r?\n(\([\w/]+\)( \([\w/]+\))*)\r?\n((-?\d+\.\d+( -?\d+\.\d+)* *)\r?\n)*(?=(\r?\n){2})
是regex中的\r?\n
。我相信这将尝试捕获每行中的4个数字值。这样做的目的是让“Dummy*\n\n”之类的东西—您提供的正则表达式可以正常工作。但是有多个类似的表格(类似的意思是一行中有5个数字)。我以前也尝试过同样的方法,但没有解决我现在面临的问题having@BhanuKaushik因此,您希望捕获以两个换行符结尾的多个表,而不是valuesTrue。表以不同的名称开头。不,它不捕获任何内容。@Paul--我试图从一个巨大的文本中从相似但不同的表中筛选出这个表,理想情况下,我需要捕获“Dummy中间的任何内容”
\n\n。我不确定它是否可行。不,它不会捕获我的数据集中的任何内容。我正在使用gskinner和regexhero来测试它。
(\w+( +\w+)*)\r?\n(\w+( +\w+)*)\r?\n(\([\w/]+\)( \([\w/]+\))*)\r?\n((-?\d+\.\d+( -?\d+\.\d+)* *)\r?\n)*(?=(\r?\n){2})