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语句永远不会被击中?
答案 0 :(得分:4)
matches()
方法尝试将整个字符串与模式匹配。您需要find()
方法。
答案 1 :(得分:1)
试试Matcher.find()。 Matcher.matches()
检查整个字符串是否与模式匹配。
答案 2 :(得分:1)
您需要使用find
因为,
匹配尝试将patten与整个字符串匹配 隐含地在开始时添加^,在模式的末尾添加$。
所以你的模式相当于“^ world $”。
答案 3 :(得分:0)
尝试将您的模式更改为".*world.*"
:
String p = ".*world.*";
这样它就会匹配任何包含“world”的字符串。
答案 4 :(得分:-1)
我遇到了同样的问题。 我不知道原因。 如果有人知道问题,请在这里发布。 我已经解决了重复使用find()而不是match()的问题。