String url= "http://www.baidu.com/s?wd=%CC%EC%BB%A8%B0%E5 ";
Pattern wd= Pattern.compile( "[&|\\?]wd=(.+)[&|$] ");
java.util.regex.Matcher m = P_WD.matcher(url);
if (m.find())
{
String keywords = m.group(1);
System.out.println(keywords+ ": "+java.net.URLDecoder.decode(keywords, "GBK "));
}
如果 url= "http://www.baidu.com/s?wd=%CC%EC%BB%A8%B0%E5&ie=gb2312 " 这是可以取出关键字的.
为什么 url= "http://www.baidu.com/s?wd=%CC%EC%BB%A8%B0%E5 "; 这样就不行???
哪位大侠帮看看??
------解决方案--------------------
Pattern wd= Pattern.compile( "(? <=\\?wd=)(.+)(&.+)? ");
------解决方案--------------------
$只是边界符号,并不是一个真正的字符
------解决方案--------------------
这样先判断 url 中是否存在 ‘&’字符,如果有 则用的 正则判断如果不是 则换一个判断~!
public String getBody(String args) {
String f = "[&|\\?]wd=(.+) ";
if (args.indexOf( "& ") != -1)
f = "[&|\\?]wd=(.+)[&] ";
Pattern p = Pattern.compile(f);
Matcher m = p.matcher(args);
if (m.find())
return m.group(1).toString();
else
return " ";
}
------解决方案--------------------
Pattern wd= Pattern.compile( "[&|\\?]wd=(.+?)(&.*)?$ ");
------解决方案--------------------
可能$只能放在最后,表示串结束,放在 []就表示一个普通字符而已
xx$跟xx[$]不一样,楼主试试就知道了
------解决方案--------------------
Pattern wd = Pattern.compile( "[&?]wd=(.+)(&.*)?$ ");
or
keywords = url.replaceAll( ".*[&?]wd=([^&]*).* ", "$1 ")
------解决方案--------------------
Pattern wd = Pattern.compile( "[&?]wd=([^&]*) ");
------解决方案--------------------
真是服了楼上们了。。。
在[...]中有大部分是不需要转义的,目前已知 "[ "和 "] "需要转义, "- "有时候需要转义, "| "就是表示一条竖线, "$ "和 "^ "也只是一个普通字符