String url = "hello world";
String p = "world";
Pattern pattern = Pattern.compile(p);
Matcher matcher = pattern.matcher(url);
if (matcher.matches()) {
int start = matcher.start();
int end = matcher.end();
}
Что я делаю не так? Каким образом утверждение if никогда не попадает?
Метод matches()
пытается сопоставить всю строку с шаблоном. Вам нужен метод find()
.
Вам нужно использовать find
потому что,
match пытается сопоставить patten с всей строкой и неявно добавить a ^ в начале и $ в конце вашего шаблона.
Таким образом, ваш шаблон эквивалентен "^ миру $".
Попробуйте Matcher.find(). Matcher.matches()
проверяет соответствие всей строки шаблону.
Попробуйте изменить свой шаблон на ".*world.*"
:
String p = ".*world.*";
Таким образом, он будет соответствовать любой строке, содержащей "мир".
У меня возникла такая же проблема. Я не знаю причины. Если кто-то знает проблему, напишите здесь. Я решил проблему с использованием find() несколько раз вместо match().