正则: "一行的结尾" $   为什么不好使??
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=([^&]*) ");
------解决方案--------------------真是服了楼上们了。。。   
 在[...]中有大部分是不需要转义的,目前已知 "[ "和 "] "需要转义, "- "有时候需要转义, "| "就是表示一条竖线, "$ "和 "^ "也只是一个普通字符