2017-03-21 16 views
-2

String str =「XYhaku(ABH1235-123548)」;「減號」成這個正則表達式,怎麼樣?

從上面的字符串,我只需要「ABH1235-123548」到目前爲止,我創建的正則表達式

Pattern.compile("ABH\\d+") 

但它返回我false.so怎樣纔是正確的正則表達式吧。

+0

嘗試'Pattern.compile( 「ABH [\\ d - ] +」)'。請注意,'\ d'不包括'-' –

+0

thx,它現在可以工作:) –

回答

1

\d只匹配數字。以包括其他字符,使用character class

Pattern.compile("ABH[\\d-]+") 

注意,-必須放在第一個或最後在字符類,因爲否則它將作爲一個範圍指示器被處理([A-Z]AZ之間的每一個字母匹配, 例如)。另一種方式,以避免將逃避它,但增加了兩個反斜槓您的字符串...

+0

我相信你仍然可以在任何點逃脫('\\ - ')範圍指示符在一個字符類中。 – Rogue

+0

沒錯。我個人偏好不要在正則表達式中添加更多反斜槓,特別是在Java中,但這不是絕對的要求。 –

+0

會不會得到多個'-'符號? 'ABH \ d + - \ d +'就夠了嗎? –

1

我只想抓住無論是在括號:

Pattern p = Pattern.compile("\\((?<data>[A-Z\\d]+\\-\\d+)\\)"); 

或者,如果你想更加開放的(任何括號):

Pattern p = Pattern.compile("\\((?<data>.+\\)\\)"); 

然後就捉拿它:

String s = /* some input */; 
Matcher m = p.matcher(s); 
if (m.find()) { //just find first 
    String tag = m.group("data"); //ABH1235-123548 
} 
相關問題