Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/356.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 创建多行正则表达式时遇到问题_Java_Regex - Fatal编程技术网

Java 创建多行正则表达式时遇到问题

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

我正在做一些数据清理工作,我必须使用(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>
伪值数据
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})