String str =「XYhaku(ABH1235-123548)」;「減號」成這個正則表達式,怎麼樣?
從上面的字符串,我只需要「ABH1235-123548」到目前爲止,我創建的正則表達式
Pattern.compile("ABH\\d+")
但它返回我false.so怎樣纔是正確的正則表達式吧。
String str =「XYhaku(ABH1235-123548)」;「減號」成這個正則表達式,怎麼樣?
從上面的字符串,我只需要「ABH1235-123548」到目前爲止,我創建的正則表達式
Pattern.compile("ABH\\d+")
但它返回我false.so怎樣纔是正確的正則表達式吧。
\d
只匹配數字。以包括其他字符,使用character class:
Pattern.compile("ABH[\\d-]+")
注意,-
必須放在第一個或最後在字符類,因爲否則它將作爲一個範圍指示器被處理([A-Z]
A
和Z
之間的每一個字母匹配, 例如)。另一種方式,以避免將逃避它,但增加了兩個反斜槓您的字符串...
我相信你仍然可以在任何點逃脫('\\ - ')範圍指示符在一個字符類中。 – Rogue
沒錯。我個人偏好不要在正則表達式中添加更多反斜槓,特別是在Java中,但這不是絕對的要求。 –
會不會得到多個'-'符號? 'ABH \ d + - \ d +'就夠了嗎? –
我只想抓住無論是在括號:
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
}
嘗試'Pattern.compile( 「ABH [\\ d - ] +」)'。請注意,'\ d'不包括'-' –
thx,它現在可以工作:) –