2016-11-17 26 views
1

我看起來像這樣的各種字符串:模式提取值在Java中

Status-Active 
Status-Inactive 10 

我想只有狀態「有效」和「無效」沒有空間和數量。

我嘗試使用(?<=-)\S+並在一個網站上工作,但在Java中做同樣的事情找不到任何東西。

private final Pattern reg = Pattern.compile("(?<=-)\\S+"); 
... 
Matcher m = reg.matcher(status); 
if(m.matches()) 
    status = m.group(0); 
+0

我想嘗試像'((?:在)[AA]莫如?)' –

回答

5

我建議你有一個儘可能接近匹配字符串的模式。

Pattern patter = Pattern.compile("Status-(Active|Inactive)"); 

然後使用組1查找狀態字符串。

1

我不會在你的情況下使用正則表達式,而不是:

status = line.contains("Inactive")?"Inactive":"Active"; 
+0

這似乎是相當脆弱的我。如果輸入由於任何原因而改變,它會默默地認爲新輸入意味着「有效」。正則表達式的優點是它是一個隱含的斷言,輸入是正確的。 – sprinter

+0

@sprinter好點。是的,當應該有其他狀態而不是這兩個時,它會中斷。否則,這個特別的解決方案的工作,看起來更簡單。 –