Java string.matches () возвращает неправильное утверждение - PullRequest
4 голосов
/ 23 августа 2011

Я запускаю некоторый код через отладчик eclipse, и a[1].matches("[a-zA-Z]") не равно true, когда a[1] = "ABCD" (a - строковый массив).

Я прочитал javadoc на matches, и [a-zA-Z] должно быть допустимым регулярным выражением ..

Кто-нибудь знает, где я иду не так?

Ответы [ 6 ]

6 голосов
/ 23 августа 2011

Попробуйте использовать это выражение: [a-zA-Z]* (будет соответствовать нулю или более символов).

Если вам требуется хотя бы один символ, используйте: [a-zA-Z]+

Используемое вами выражение будет соответствовать только одному альфа-символу, так как оно не количественно .

2 голосов
/ 23 августа 2011

Попробуйте a[1].matches("[a-zA-Z]+"). В нем говорится, что «один или несколько символов» должны совпадать, а не только один символ.

Обратите внимание, что '*' вместо '+' соответствует «нулю или более символов», поэтому он будет соответствовать пустой строке (вероятно, не то, что вы хотите).

1 голос
/ 23 августа 2011

Я думаю, что это должно быть a[1].matches("[a-zA-Z]*")

0 голосов
/ 13 августа 2017
a[1].matches("[a-zA-Z\\s]+")  

может помочь

0 голосов
/ 23 августа 2011

Причина, по которой вы не соответствуете строке, заключается в том, что ваше выражение RegEx пытается соответствовать только одному символу.Попробуйте это:

a[1].matches("[a-zA-Z]*")
0 голосов
/ 23 августа 2011

[a-zA-Z] будет принимать только одну букву.Вам, вероятно, нужно [a-zA-Z]*.

...