愚蠢的RegEx问题。我究竟做错了什么?

时间:2012-01-26 01:54:15

标签: java android regex

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语句永远不会被击中?

5 个答案:

答案 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()的问题。