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