正则表达式提取特定模式

时间:2015-08-20 07:31:06

标签: java regex

我正在尝试这个很长一段时间但没有帮助。

我有以下字符串:

  

42343473479 | 112273563 || 错误| XYZ123 | com.test.Test1 || WebContainer:
21 | java.lang.NullPointerException

       at com.test.Test.compare(TestUtil.java:459)
      在com.test.compare(TestUtil.java:457)

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

  

ERROR | XYZ123 | com.test.Test1 || WebContainer:21 | java.lang.NullPointerException)
  在com.test.Test.compare(TestUtil.java:459)

可以有任何数字

  

:444)
  :5723)

到目前为止我:

  

ERROR \ |。* [^)] +)

但我需要匹配直到')#39;一种模式。最后在和之间可以有任何数字。

请帮忙。

****问题改编。删除了要排除文本的部分*****

1 个答案:

答案 0 :(得分:0)

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

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

您可以使用replaceAll代替:

$2$3$4

请注意,这是一个回答,请注意这个问题需要一个java正则表达式,其中\\本身必须被转义。

未转义的版本:

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