2015-08-14 39 views
1

請建議我的正則表達式:正則表達式開頭的字符串和結尾「)」有多個occurances

字符串:

這是文本)做正則表達式測試。故障模式(com.test.Validator.java:32)幾個文字錯誤產生的原因::故障模式(com.test.Validator2.java:65)幾個文本

需要提取錯誤產生的原因:

所致:故障模式(com.test.Validator.java:32)所致:故障模式(com.test.Validator2.java:65)

正則表達式使用:

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

問題:?

  1. 只給我的第一次出現。
  2. ')' 得到排除
+0

#1涉及使用正則表達式,而不是正則表達式本身的代碼 - 你需要向我們展示的代碼讓我們幫助(雖然,爲了使未來的訪問者有用,它可能是最好的獨立問題,但我確定有一個重複的地方,像[this](http://stackoverflow.com/questions/6884484/)如何-可以-I-發現,所有的比賽對一個正則表達式功能於機器人))。 – Dukeling

回答

1

你可以使用這個表達式:

Caused by:[^)]+\) 

請注意,您所需要的g修改多個macthes。

Online demo

的Java,你需要產生額外的反斜槓:

Caused by:[^)]+\\) 

此正則表達式匹配Caused by後面的字符的正數(除)),其次是)

+0

非常感謝。但是如何獲得一個字符串中的所有事件?我正在使用Java – saptarshi

+0

@saptarshi \t 你想要* 1 *字符串中的所有匹配嗎? –

+0

謝謝@Sven .....我搜索了所有其他使用Java的事件....感謝您的幫助... – saptarshi

0

做出比您始終想要與第一個右括號匹配的假設。

Caused by:.*?\) 
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()); 
     } 
相關問題