2016-05-20 79 views
1

我得到以下String迴應時,我pull the annotations of a method in Java class獲取Java註釋期望的數據

@client.test.annotations.TestInfo(id=[C10137]) 
@org.testng.annotations.Test(alwaysRun=false, expectedExceptions=[].. 

不過我只在id=[C10137]部分感興趣,並希望得到這個數字 - 10137。此外,還可以作爲一個案例:

CASE1://multiple ids

@client.test.annotations.TestInfo(id=[C10137, C12121]) 
    @org.testng.annotations.Test(alwaysRun=true,... 

CASE2://no id

@client.test.annotations.TestInfo(id=[]) //ignore this time 
    @org.testng.annotations.Test(alwaysRun=true,... 

將正則表達式的工作對我來說在這裏產生這種陣列id的?或者其他一些好方法來獲得理想的ID數組。

回答

1

你可以使用這個表達式

\bid\b=\[(.+?)\] 

Regex Demo

Java代碼的

String line = "@client.test.annotations.TestInfo(id=[C10137])@org.testng.annotations.Test(alwaysRun=false, expectedExceptions=[].."; 
String pattern = "\\bid\\b=\\[(.+?)\\]"; 
Pattern r = Pattern.compile(pattern); 
Matcher m = r.matcher(line); 

if (m.find()) { 
    System.out.println(m.group(1)); 
} 

Ideone Demo

+0

考慮我的'CASE1'問題作爲我的Java字符串。我這樣做'String.replaceAll(String,「\ bid \ b = \ [(。+?)\]」)... ...編譯器說正則表達式的無效序列?我錯過了什麼嗎? –

+0

@PratikJaiswal你可以使用'matcher'..see it ** [here](http://ideone.com/knJM6D)** – rock321987

+1

爲我工作,我可以從這裏開始。 –