正则表达式模式以字符串开头,以')'结尾,多次出现

时间:2015-08-14 12:31:33

标签: regex pattern-matching

请建议我使用正则表达式:

字符串:

  

这是文本)进行正则表达式测试。错误引起:错误模式(com.test.Validator.java:32)更多文本错误引起:错误模式(com.test.Validator2.java:65)更多文本

需要提取:

  

引起:错误的模式(com.test.Validator.java:32)   和   引起:错误模式(com.test.Validator2.java:65)

使用正则表达式模式:

  

引起:(。?)([^)])

的问题:

  1. 只给我第一次出现。
  2. ')'被排除在外

2 个答案:

答案 0 :(得分:1)

您可以使用此正则表达式:

Caused by:[^)]+\)

请注意,您需要多个macthes的 g 修饰符。

Online demo

Java 中,您需要一个额外的反斜杠:

Caused by:[^)]+\\)

此正则表达式匹配Caused by后跟正数字符()除外),后跟)

答案 1 :(得分:1)

对于Java,您可以使用下一个:

Pattern p = Pattern.compile("Caused by: [^)]+\\)");
        Matcher m = p.matcher("Caused by: faulty pattern (com.test.Validator.java:32) and Caused by: faulty pattern (com.test.Validator2.java:65)");
        while(m.find()){
            System.out.println(m.group());
        }