问题如下,一个百度的搜索链接,需要用正则表达式汲取出搜索关键词,就是红色部分,
通过观察发现,在字符 【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
通过观察发现,在字符 【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
string s2=s1.TOLower();
int i1=s.IndexOf("wd=");
int i2=s.LastIndexOf("&ct");
sring result=s.substring(i1+3,i2);
为什么我写的就死活不对呢?你写的这个我能看明白前面的(?<=wd=)的意思就查找wd=后面的内容。[^&]的意思不包括&, + 是重复多次。可是并没有一些事匹配中间的内容的呀。?可以加你msn或qq吗?给你发站内信了,想多骁习骁习,也进步。
这个正则,你分开的解释基本上是正确的,但是合起来你的理解可能就有些不到位了[^&]表示不是“&”的任意一个字符,虽然是任意的,但只能是一个字符
而+表示这样的字符重复一次或无限多次,即至少有一个这样的字符那么合起来,就是在wd=后面,不是“&”的字符,一个或无限多个,因为+是贪婪的,所以在能匹配成功的情况下,尽可能多的匹配
那么这里的[^&]+就从wd=后面的位置开始匹配,一直匹配到“&”字符或是字符串的结尾为止