Начало использования регулярного выражения в методе java Pattern.matches? - PullRequest
0 голосов
/ 30 января 2019

Меня немного смущает символ ^ в регулярном выражении.

Из того, что я читаю онлайн, это означает: "Находит регулярное выражение, которое должно совпадать в начале строки."

Я читал о примере, представленном здесь: https://regexone.com/lesson/line_beginning_end

«В приведенном выше примере мы можем использовать шаблон ^success для сопоставления только строки, начинающейся со слова»«успех», но не строка Error: unsuccessful operation

Моя путаница связана с тем, что ^success будет совпадать только со строкой «успех», верно? Так в чем смысл ^ В приведенных ниже примерах«Я ожидал бы, что второе также будет истинным, основываясь на описании символа ^.

System.out.println(Pattern.matches("^success","success"));  // true
System.out.println(Pattern.matches("^success","success is good"));  // false

Кто-нибудь может дать мне какие-нибудь четкие примеры с этим символом ^, используемым в регулярном выражении?

1 Ответ

0 голосов
/ 30 января 2019

Вы правы, ^success только соответствует строке "success".
Но ^success все еще является шаблоном, который можно найти в строке типа "success is good".

Вы можете проверить ...

System.out.println(Pattern.matches("^success.*","success is good"));

... что должно быть истиной, поскольку оно соответствует строкам, которые начинаются с "success" и содержат больше символов.
ИЛИ вы можете попробовать найти шаблон ^success в строке.Это проблема терминологии.Шаблон соответствует строке, только если он соответствует всей строке полностью . найти шаблон как часть строки (так что его подстрока соответствует шаблону) - это совсем другое!

A полное совпадение строки также подразумевает ^ и $ (для начала и конца строки) в шаблоне, потому что строка должна совпадать от начала до конца (спасибо @Pshemo за указание этого!).

Также см .: Использование Java для поиска подстроки большей строки с использованием регулярного выражения

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...