2012-09-19 23 views
3

能有人請解釋的\\A\\z我的意思嗎?我假設他們在這個正則表達式中有特殊含義,因爲他們正在逃脫(但我可能是錯的,他們可能分別代表A和z)。謝謝!Java的正則表達式說明

private static final Pattern PATTERN = Pattern.compile("\\A(\\d+)\\.(\\d+)\\z"); 
+4

入住這裏:http://docs.oracle.com/javase/6/docs/api/java/util/regex/Pattern.html – Vikdor

+0

感謝您的聯繫! –

+0

您需要雙反斜槓,因爲在Java中,單個反斜槓會轉義下一個字符。所以要實現\ A你需要\\ A。這是Java的方式:) –

回答

10

\A意思是 「串開始」,和\z意思是 「字符串的末尾」。

你可能已經看到在這方面^$,但它們的含義可以有所不同:如果您編譯使用Pattern.MULTILINE一個正則表達式,那麼他們改變自己的意思爲「行首」和「行結束」。 \A\z的含義從不改變。

也存在\Z這意味着「字符串的結尾,任何尾隨的換行符之前」,這是類似於$確實在多行模式(在那裏的行結束換行符前右相匹配,如果它的存在)。

+0

我正要問,\ A和\ z是否與^和$相似。謝謝你的解釋! –

4

該Java表達式:

Pattern.compile("\\A(\\d+)\\.(\\d+)\\z") 

產生此正則表達式:

\A(\d+)\.(\d+)\z 

其中\A指 「啓動的串」 和\z表示 「結束字符串」。

因此,該模式由一個或多個數字的任何字符串,加上一個小數點,加上一個或多個數字相匹配。

有關Java正則表達式表示法的各個方面的詳細信息,請參閱the Javadoc for java.util.regex.Pattern