Разница между [^ \ d]. * И ^ [^ \ d]. * В регулярных выражениях Java

1

^[^\d].* - вернуть true, если строка не имеет числа в начале. [^\d].* похоже, работает так же, как ^[^\d]. В чем разница между ними? Какая строка может соответствовать ^[^\d].* Но не с [^\d].*?

Теги:

1 ответ

6
Лучший ответ

Это зависит от того, используете ли вы matches() или Matcher.find()

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

Справка

  • 0
    Спасибо, рад, что это помогает! :)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню