2013-02-18 52 views
0

我想從這個字符串popup_siteinfo(this, '/click/betclic', '373', 'BetClic', '60€');正則表達式匹配的在線測試儀,但不是在JAVA

我寫了一個簡單的正則表達式上Regex Tester工程提取文本BetClic但是,這並不在Java中工作。

這裏的正則表達式

'\d+', '(.*?)' 

這裏的Java輸出

Exception in thread "main" java.lang.IllegalStateException: No match found 
at java.util.regex.Matcher.group(Matcher.java:485) 
at javaapplication1.JavaApplication1.main(JavaApplication1.java:74) 
Java Result: 1 

,這裏是我的代碼

Pattern pattern = Pattern.compile("'\\d+', '(.*?)'"); 
Matcher matcher = pattern.matcher(onMouseOver);     
System.out.print(matcher.group(1)); 

其中onMouseOver字符串popup_siteinfo(this, '/click/betclic', '373', 'BetClic', '60€');

我不是一個正則表達式的專家,但我很確定我沒有錯!

對此提出建議?

+0

下面的答案很好,但問號似乎多餘。 *應該匹配0個或更多個字符。 – 2013-02-18 20:53:52

回答

3

您需要group(...)調用find()

Pattern pattern = Pattern.compile("'\\d+', '(.*?)'"); 
Matcher matcher = pattern.matcher(onMouseOver);     
if(matcher.find()) { 
    System.out.print(matcher.group(1)); 
} 
else { 
    System.out.print("no match"); 
} 
0

你打電話group(1),而無需先叫一個匹配操作(如find()).-這是IllegalStateException原因。

如果您必須使用該分組的案例進行替換,那麼如果您只是使用$ 1,因爲replaceAll()是匹配操作,所以不需要這樣做。

相關問題