2011-03-02 141 views
1

我學習GWT按照this tutorial但有件事情我不太完全步驟4中下面一行的檢查字符串中的模式相匹配的理解:問題了解字符串模式

if (!str.matches("^[0-9A-Z\\.]{1,10}$")) {...} 

經過檢查the documentation對於Pattern類我明白字符^和$表示行的開始和結束,[...] {1,10}表示括號[...]中的部分必須存在至少一次但不超過10次。我不明白的是括號內部分的最終字符。 0-9A-Z表示從0到9或從A到Z的一系列字符。但是\ \。意思?

回答

3

它匹配一個點字符。由於dot在正則表達式中有特殊含義,因此必須用反斜槓進行轉義。由於反斜槓在Java字符串中有特殊含義,因此必須用另一個反斜槓進行轉義。

+0

謝謝!!我現在得到它 – Neets 2011-03-02 09:00:17

1

點。 因爲它是regexp語法中的特殊字符。 另外它有兩個轉義,因爲\是java字符串中的一個特殊字符。

+0

對不起,我不明白你在說什麼。你能以其他方式解釋嗎? – Neets 2011-03-02 08:46:35

+0

「\\」。在模式匹配「。」 – mkorpela 2011-03-02 08:49:10

+0

感謝您的回覆! – Neets 2011-03-02 09:02:28

1

它匹配一個點字符。雙斜槓「\\」僅僅意味着單個'\',因爲你必須在java字符串中轉義'\'。所以'\\'。被翻譯爲'\'。這意味着只匹配'。'。字符。如果你只是用'。'它本身不會逃跑,它可以匹配任何角色。所以你必須逃避它,以匹配'。'。字符。

+0

謝謝!這個小點讓我感到困惑lol – Neets 2011-03-02 09:03:25

1

點「。」在正則表達式中意味着「任何字符」。一個逃脫的點「。」 (或「\。」)表示點字符本身(沒有像非轉義點那樣的任何特殊的正則表達式行爲)。

因此,例如,「123.ABC」可以是與給定的正則表達式匹配的行(不包括換行符等)。

+0

謝謝你的回覆! – Neets 2011-03-02 09:01:52