Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/368.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,我尝试了很长时间,但没有帮助 我有以下字符串: 42343473479 | 112273563 |错误| XYZ123 | com.test.Test1 | WebContainer:21 | java.lang.NullPointerException 位于com.test.test.compareTestUtil.java:459 在com.test.compareTestUtil.java:457 现在我需要一个模式来提取以下内容: 错误| XYZ123 | com.test.Test1

我尝试了很长时间,但没有帮助

我有以下字符串:

42343473479 | 112273563 |错误| XYZ123 | com.test.Test1 | WebContainer:21 | java.lang.NullPointerException 位于com.test.test.compareTestUtil.java:459 在com.test.compareTestUtil.java:457

现在我需要一个模式来提取以下内容:

错误| XYZ123 | com.test.Test1 | WebContainer:21 | java.lang.NullPointerException 位于com.test.test.compareTestUtil.java:459

可能有任何号码

:444 :5723

到目前为止,我:

错误\|。*[^]+

但我需要匹配到“:459”的模式。在:和之间可能有任何数字

请帮忙


****问题重新措辞。删除了排除文本的部分******

您可以在java代码中尝试如下正则表达式:

(^.*)(ERROR.*\\n)(.*\\n)(.*\\n){2}(.*(\\n|$))*
您可以将replaceAll与以下内容一起使用:

$2$3$4
注意:这是一个答案,但要记住这样一个事实,即问题要求使用java正则表达式,其中\\本身必须转义

未替换版本:

(^.*)(ERROR.*\n)(.*\n)(.*\n){2}(.*(\n|$))*

排除中间的任何文本是什么意思?您是否尝试过使用带有indexOfI的子字符串要排除从\n开始到“at”开始之前的任何模式是错误| XYZ123 | com.test.Test1 | WebContainer:21 | java.lang.NullPointerException at com.test.test.CompareTStutil.java:459您正在尝试的全部文本范围的示例提取?是的……这是正确的……我想把文本作为一个整体来提取……我很抱歉……但是上面的表达式不起作用。如果我们离开“排除部分”,仅仅从“错误”到“…123”……我们应该如何写表达式。你在哪里测试表达式,在样本文本中它在哪里有“:123”?测试我们需要得到文本直到“:459”。数字可能会有所不同。问题被标记为java,其中每个\'需要用另一个\'转义,这就是为什么每个\\n显示为java将如何接受它:\\n。但是,在上面链接的示例中,它没有直接使用java,因此只需一个\'by\n`即可。