^[^\d].*
- вернуть true, если строка не имеет числа в начале. [^\d].*
похоже, работает так же, как ^[^\d].
В чем разница между ними? Какая строка может соответствовать ^[^\d].*
Но не с [^\d].*
?
Это зависит от того, используете ли вы matches()
или Matcher.find()
[^\d].*
соответствует одному символу, который не является цифрой, а затем все до конца строки: например, abc
.^
утверждает, что мы находимся в начале строки. Поэтому ^[^\d].*
Соответствует, начиная с начала строки, один символ, который не является цифрой, а затем все до конца строки. Он будет соответствовать строке abc
, но он не будет соответствовать abc
в этой строке: 1 abc
matches()
, не будет никакой разницы, поскольку matches()
соответствует, если шаблон соответствует всей строке (он не ищет возможные совпадения подстроки). Использование matches()
совпадает с использованием регулярного выражения, полностью привязанного к символам ^
и $
Matcher.find()
, вы увидите разницу выше, поскольку она ищет совпадения в любой строке темы.Справка