2012-01-26 27 views
1
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语句怎么会不被打到?愚蠢的RegEx问题。我究竟做错了什么?

回答

4

matches()方法尝试将整个字符串与模式匹配。您需要find()方法。

+0

或“String p =”\ * world \ *“; –

+0

您是对的,谢谢,我阅读了Matcher上的文档,我仍然不清楚match()和find()之间的区别。你介意详细说明一下? – user123321

+0

匹配表示“整个字符串是否与提供的模式匹配”。查找的意思是“字符串内是否有这种模式出现” –

-1

我遇到过同样的问题。 我不知道原因。 如果有人知道问题,请在这里发帖。 我已经解决了重复使用find()而不是matches()的问题。

0

尝试你的模式改变为".*world.*"

String p = ".*world.*"; 

这样,它会匹配包含“世界”的任何字符串。

1

您需要使用find因为,

匹配试图彭定康对整个字符串匹配和 隐含添加一个开始和$ ^在你的模式结束。

所以你的模式相当于“^ world $”。

+0

啊......这很有道理......并且是愚蠢的,如果我想要的话,我会添加它的哦,呃,感谢一堆! – user123321

+0

啊..没关系。 – RanRag