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

Regex pattern starting with a String and ending with ')' with multiple occurances

请给我建议正则表达式模式:

字符串:

this is text ) doing regex test. Error Caused by: faulty pattern (com.test.Validator.java:32) few more text Error Caused by: faulty pattern (com.test.Validator2.java:65) few more text

需要提取:

Caused by: faulty pattern (com.test.Validator.java:32) and Caused by: faulty pattern (com.test.Validator2.java:65)

正则表达式模式使用:

Caused by:(.?)([^)])

问题:

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

您可以使用这个正则表达式:

Caused by:[^)]+\)

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

Online demo

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

Caused by:[^)]+\)

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

假设您总是希望匹配第一个右括号。

Caused by:.*?\)

对于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());
        }