高分求一个正则表达式的写法。

goodcn 2007-07-09 09:29:58
下面是google的一个搜索链接,我想用正则表达式匹配出关键词,就是以“q=”开头,以“&”结束的那部分文字,还要考虑后面没有“&”的情况。
我是这样写的:q=(.*)&,但是匹配出这个字符串,显然不对:q=%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F%20%E7%BB%93%E6%9D%9F&hl=zh-CN&lr=&

http://www.google.com/search?q=%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F%20%E7%BB%93%E6%9D%9F&hl=zh-CN&lr=&nxpt=20.98701769522124843416
...全文
162 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
linekery 2007-07-09
  • 打赏
  • 举报
回复
看看
-过客- 2007-07-09
  • 打赏
  • 举报
回复
?<=反向预搜索,?=是在右侧附加条件,?<=是在左侧附加条件,不是所有正则引擎都支持
小码 2007-07-09
  • 打赏
  • 举报
回复
http://www.google.com/search?q=%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F%20%E7%BB%93%E6%9D%9F&hl=zh-CN&lr=&nxpt=20.98701769522124843416
在Test(\?q=([^&]*)&?)后获得字串是?q=%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F%20%E7%BB%93%E6%9D%9F&,取group 1里的。
belldandy11 2007-07-09
  • 打赏
  • 举报
回复
To 过客
?=是正向预查
?<=表示什么?
小码 2007-07-09
  • 打赏
  • 举报
回复
\?q=([^&]*)&?
belldandy11 2007-07-09
  • 打赏
  • 举报
回复
我觉得你可以换个角度想 提取
http://www.google.com/search?q=后面的字符串

这个正则应该就很简单了哈

呵呵 不知道你要的是不是这样的结果

string str=http://www.google.com/search?q=%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F%20%E7%BB%93%E6%9D%9F&hl=zh-CN&lr=&nxpt=20.98701769522124843416

string Rstr=Regex.Replace(str,@"^http://www.google.com/search?q=([\w\W]+)$","$1")
Go_Rush 2007-07-09
  • 打赏
  • 举报
回复
q=([^&]*)&?
-过客- 2007-07-09
  • 打赏
  • 举报
回复
try

string test = "http://www.google.com/search?q=%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F%20%E7%BB%93%E6%9D%9F&hl=zh-CN&lr=&nxpt=20.98701769522124843416";
string result = "";
Match m = Regex.Match(test, @"(?<=q=)[^&]*(?=&|$)", RegexOptions.IgnoreCase);
if (m.Success)
result = m.Value;


不过MS这个可以不用正则来做的

62,244

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧