2011-08-23 98 views
4

我正在通過eclipse調試器運行一些代碼,a[1].matches("[a-zA-Z]")不等於truea[1] = "ABCD"a是一個字符串數組)。Java string.matches()返回錯誤的語句

我讀過matches[a-zA-Z]的Javadoc應該是一個有效的正則表達式。

任何人都知道我要去哪裏錯了嗎?

+0

'[A-ZA-Z]'可以匹配該範圍內的任何單個字符。您需要添加限定詞a例如'*'(0或更多)或'+'(1或更多)。 – ean5533

回答

6

嘗試使用此表達式:[a-zA-Z]*(將匹配零個或多個字符)。

如果你需要至少一個字符,使用方法:[a-zA-Z]+

你使用,因爲它不是quantified將只匹配單個字母字符的表達。

+1

這對於'a [1] ==「」'也是合適的[[這可能是也可能不是OP所要的,你從這個問題中不能判斷]。 – amit

+0

@amit - 我已經更新了我的答案,其中包括一些示例。 –

1

我覺得應該是a[1].matches("[a-zA-Z]*")

0

[a-zA-Z]將只接受單個字母。您可能需要[a-zA-Z]*

2

嘗試a[1].matches("[a-zA-Z]+")。它說「一個或多個字符」必須匹配而不是隻有一個字符。

注意,而不是「+」匹配「零個或多個字符,因此它將匹配空字符串(可能不是你想要的)。

0

的原因,你沒有匹配的是字符串「*」是你的正則表達式表達試圖只是一個單一的字符匹配試試這個:

a[1].matches("[a-zA-Z]*") 
0
a[1].matches("[a-zA-Z\\s]+") 

可以幫助