问题如下,一个百度的搜索链接,需要用正则表达式汲取出搜索关键词,就是红色部分,
通过观察发现,在字符 【wd=】和【&】之间。想求一个正则表达式来匹配,wo ziji自己水平有限,怎么写都写不正确这个事我自己写的,就是(?<=wd=)[\w\.]+[^&],死活不对。请高手指点http://www.baidu.com/s?ie=gb2312&bs=%D5%FD%D4%F2&sr=&z=&cl=3&f=8&wd=%D5%FD%D4%F2%B1%ED%B4%EF%CA%BD&ct=0        

解决方案 »

  1.   

    string s1="http://www.baidu.com/s?ie=gb2312&bs=%D5%FD%D4%F2&sr=&z=&cl=3&f=8&wd=%D5%FD%D4%F2%B1%ED%B4%EF%CA%BD&ct=0";
    string s2=s1.TOLower();
    int i1=s.IndexOf("wd=");
    int i2=s.LastIndexOf("&ct");
    sring result=s.substring(i1+3,i2);
      

  2.   

    lxcnn老哥好像昨天刚刚回答过我一个问题,也是正则的,正确,。这个一试就爽(?<=wd=)[^&]+  了。我想问问,就是(? <=wd=)[\w\.]+[^&],死活不对。请高手指点 。
    为什么我写的就死活不对呢?你写的这个我能看明白前面的(?<=wd=)的意思就查找wd=后面的内容。[^&]的意思不包括&, + 是重复多次。可是并没有一些事匹配中间的内容的呀。?可以加你msn或qq吗?给你发站内信了,想多骁习骁习,也进步。
      

  3.   

    由于工作的原因,我目前只能晚上或节假日才能上网,所以MSN和QQ都已经不用了但是每天晚上都会上论坛看看,有事找我给我站内信就可以了(?<=wd=)[^&]+  
    这个正则,你分开的解释基本上是正确的,但是合起来你的理解可能就有些不到位了[^&]表示不是“&”的任意一个字符,虽然是任意的,但只能是一个字符
    而+表示这样的字符重复一次或无限多次,即至少有一个这样的字符那么合起来,就是在wd=后面,不是“&”的字符,一个或无限多个,因为+是贪婪的,所以在能匹配成功的情况下,尽可能多的匹配
    那么这里的[^&]+就从wd=后面的位置开始匹配,一直匹配到“&”字符或是字符串的结尾为止