求一正则表达式(在线等)

paulyjin 2008-05-04 10:18:41
有以下字符串:
http://www.google.cn/search?hl=zh-CN&q=asdfasdf&btnG=Google+%E6%90%9C%E7%B4%A2&meta=&aq=f
http://www.google.com.mx/search?hl=zh-CN&q=adsf&btnG=Google+%E6%90%9C%E7%B4%A2&meta=
http://hk.search.yahoo.com/search?p=wert&ei=UTF-8&n=10&meta=rst%3Dhk&fr2=&ei=UTF-
http://cn.f920.mail.yahoo.com/ym/login?.rand=2qn8uuhm51svl
http://www.crusher-china.fr/-------------
要求是取出"http://"到第一个"/"之间的所有字符(含"-","."等)-------谢谢
...全文
111 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
paulyjin 2008-05-04
  • 打赏
  • 举报
回复
谢谢各位--问题已经ok-- 自己正则的水平--哎--汗颜啊------------
hackztx 2008-05-04
  • 打赏
  • 举报
回复

? <...>//是需要多分组吗??????只要匹配项不是太多,尽量使用默认的组好,这其中涉及到一个优先级
//http://(?<url>([^/]+?))/ 一共有三个组,你定义了2个组...然而这其中一个是毫无意义的...仅仅是可以使用数字组号和字符组号url.....

以下是你的正则测试结果:

恭喜你,共匹配到数据有1项

编号 组名
第1个组的组名为: 0

所匹配的结果如下:

1、 http://d/
第2个组的组名为: 1

所匹配的结果如下:

1、 d
第3个组的组名为: url

所匹配的结果如下:

1、 d


//可能理解有误,希望共同切磋!
bary 2008-05-04
  • 打赏
  • 举报
回复
        static void Main(string[] args)
{
System.Console.Write(Extension("http://cn.f920.mail.yahoo.com/ym/login?.rand=2qn8uuhm51svl"));
}

static String Extension(String url)
{
Regex r = new Regex(@"http://(?<url>([^/]+?))/",
RegexOptions.Compiled);
return r.Match(url).Result("${url}");
}


完整的测试用例!!

to hackztx :
楼主的意思是提取字符,那么应该用?<...>这种格式,我看其他人给的正则多是用于查找匹配的!需要进一步处理才能得到lz想要的内容。
bary 2008-05-04
  • 打赏
  • 举报
回复
String Extension(String url)  
{
Regex r = new Regex(@"http://(?<url>([^/]+?))/",
RegexOptions.Compiled);
return r.Match(url).Result("${url}");
}


这会对了,上一个代码中间多一个空格
hackztx 2008-05-04
  • 打赏
  • 举报
回复

//http://(? <url>([^/]+?))/
//还不如写成http://(.+?)/
jackyzsy2008 2008-05-04
  • 打赏
  • 举报
回复
为啥不用SubString()呢?
bary 2008-05-04
  • 打赏
  • 举报
回复
String Extension(String url)
{
Regex r = new Regex(@"http://(?<url>([^/]+?))/",
RegexOptions.Compiled);
return r.Match(url).Result("${url}");
}

注意判断输出异常,比如http://www.sina.com.cn就结束了,没有后面的/,会抛出异常,处理一下就行了!
hackztx 2008-05-04
  • 打赏
  • 举报
回复

string strLinks = @"http://www.google.cn/search?hl=zh-CN&q=asdfasdf&btnG=Google+%E6%90%9C%E7%B4%A2&meta=&aq=f
http://www.google.com.mx/search?hl=zh-CN&q=adsf&btnG=Google+%E6%90%9C%E7%B4%A2&meta=
http://hk.search.yahoo.com/search?p=wert&ei=UTF-8&n=10&meta=rst%3Dhk&fr2=&ei=UTF-
http://cn.f920.mail.yahoo.com/ym/login?.rand=2qn8uuhm51svl
http://www.crusher-china.fr/------------- ";
MatchCollection mc = Regex.Matches(strLinks, "http://(.*?)/");//(.*?)/这样其实更简单
foreach (Match m in mc)
{
Console.WriteLine(m.Groups[1].Value);
}

//using System.Text.RegularExpressions;
  • 打赏
  • 举报
回复
你取第一组,不是0组
无先生 2008-05-04
  • 打赏
  • 举报
回复
2楼的我爱是你咯
下次找你给我讲
paulyjin 2008-05-04
  • 打赏
  • 举报
回复
谢谢楼上的--
不过还是有点问题--要求是取出"http://"到第一个"/"之间的所有字符---不包含"http://"--"/"--
我去找帮助看一下----
  • 打赏
  • 举报
回复

subjectString = @"http://www.google.cn/search?hl=zh-CN&q=asdfasdf&btnG=Google+%E6%90%9C%E7%B4%A2&meta=&aq=f";

try {
Regex regexObj = new Regex("http://([^/]*)/");
Match matchResults = regexObj.Match(subjectString);
while (matchResults.Success) {
// matched text: matchResults.Value
// match start: matchResults.Index
// match length: matchResults.Length
matchResults = matchResults.NextMatch();
}
} catch (ArgumentException ex) {
// Syntax error in the regular expression
}

无先生 2008-05-04
  • 打赏
  • 举报
回复
其实可以自己摸索下
去点下帮助
里面讲的很清楚

zero8500 2008-05-04
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 paulyjin 的回复:]
谢谢各位--问题已经ok-- 自己正则的水平--哎--汗颜啊------------
[/Quote]

62,046

社区成员

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

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

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

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