C#字符串截取问题 例子: 已知字符串 str1 是一个网址 如 www.icbc.com.cn || www.baidu.com || www.sina.cn || www.csdn.net 字符串str2 如何获取 网址中的 主域名,如 icbc baidu siana csdn 求代码 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 比较笨的方法: 1、先分离字符串 ,分离符号“||” 2、再继续分离,分离符号“.” 3.移除“www”、“com”、“cn”等 4 剩下的就是你所要的了 string[] list = "www.icbc.com.cn || www.baidu.com || www.sina.cn || www.csdn.net".Split(new string[] { "||" }, StringSplitOptions.RemoveEmptyEntries); Regex regex = new Regex(@"(www|)\.(.*?)\.(com|cn|net)(.*?)"); foreach (string s in list) { Match m=regex.Match(s); if (m.Groups.Count>0) { Console.WriteLine(m.Groups[2].Value); } } Console.Read(); string source = @"www.icbc.com.cn || www.baidu.com || www.sina.cn || www.csdn.net"; Regex reg = new Regex(@"www.(?<name>\w*\W*).(com|cn|net)"); Match mm = reg.Match(source); MatchCollection mc = reg.Matches(source); foreach (Match m in mc) { MessageBox.Show(m.Groups["name"].Value); } string sourcestr = @"www.icbc.com.cn || www.baidu.com || www.sina.cn || www.csdn.net"; Regex regx = new Regex(@"www\.(\w*\W*)\.(com.cn|com|cn|net)"); List<string> urllist = new List<string>(); MatchCollection mcurl = regx.Matches(sourcestr); foreach (Match sk in mcurl) { urllist.Add(sk.Groups[1].Value);//urllist中icbc,baidu,sina,csdn } string strTest = "www.icbc.com.cn || www.baidu.com || www.sina.cn || www.csdn.net"; StringBuilder strResult = new StringBuilder(); MatchCollection matches = Regex.Matches(strTest, @"(?<=[wW]{3}\.)[^\.]+(?=.(com|cn|net))"); System.Collections.Generic.List<string> strResults = new System.Collections.Generic.List<string>(); foreach (Match match in matches) { // 这里为啥不直接用.Value? strResults.Add(match.Value); } 我明白了 ,谢谢各位的帮助!......不过我正则有点尴尬 ,再问一下,假如说匹配 tpiic.csdn.net mail.163.com 或者 .com后边还有一大串内容,正则要怎么写? 看4楼的,不管你有多少这种网址,结果就在urllist中string sourcestr = @"(?is)www.icbc.com.cn || www.baidu.com || www.sina.cn || www.csdn.net"; Regex regx = new Regex(@"www\.(\w*\W*)\.(com.cn|com|cn|net)"); List<string> urllist = new List<string>(); MatchCollection mcurl = regx.Matches(sourcestr); foreach (Match sk in mcurl) { urllist.Add(sk.Groups[1].Value);//urllist中icbc,baidu,sina,csdn } 针对你当前提问的数据只需把list添加那句改成 urllist.Add(sk.Groups[0].Value);//改成0就可以了当然你要匹配更完整的可以用http(s)?://([\w-]+\.)+[\w-]+(/[\w-./?%&=]*)? 一个服务器端程序与多个客户端连接通信TCP Socket C#中在窗体加载时默认为当前时间真么写sql语句 软件工程 UML类图文档信息 LocationChanged未将对象引用设置到对象实例。 list<t> 初学.net,一个判断语句的语法问题请教 为何我的c#环境下不能画图 100分讨论概率问题 如何判断一组号码中是否有连续5次以上的连号,并删除 求c#大神帮忙写一个c#通用函数,将传入的字符串按一定格式输出 大家帮忙详细分析解答下关于继承的题目,被搞得有点晕... 关于DataList分页的问题,拜托帮我看看!!
1、先分离字符串 ,分离符号“||”
2、再继续分离,分离符号“.”
3.移除“www”、“com”、“cn”等
4 剩下的就是你所要的了
Regex regex = new Regex(@"(www|)\.(.*?)\.(com|cn|net)(.*?)");
foreach (string s in list)
{
Match m=regex.Match(s);
if (m.Groups.Count>0)
{
Console.WriteLine(m.Groups[2].Value);
}
} Console.Read();
string source = @"www.icbc.com.cn || www.baidu.com || www.sina.cn || www.csdn.net";
Regex reg = new Regex(@"www.(?<name>\w*\W*).(com|cn|net)");
Match mm = reg.Match(source);
MatchCollection mc = reg.Matches(source);
foreach (Match m in mc)
{
MessageBox.Show(m.Groups["name"].Value);
}
string sourcestr = @"www.icbc.com.cn || www.baidu.com || www.sina.cn || www.csdn.net";
Regex regx = new Regex(@"www\.(\w*\W*)\.(com.cn|com|cn|net)");
List<string> urllist = new List<string>();
MatchCollection mcurl = regx.Matches(sourcestr);
foreach (Match sk in mcurl)
{
urllist.Add(sk.Groups[1].Value);//urllist中icbc,baidu,sina,csdn
}
string strTest = "www.icbc.com.cn || www.baidu.com || www.sina.cn || www.csdn.net";
StringBuilder strResult = new StringBuilder();
MatchCollection matches = Regex.Matches(strTest, @"(?<=[wW]{3}\.)[^\.]+(?=.(com|cn|net))");
System.Collections.Generic.List<string> strResults =
new System.Collections.Generic.List<string>();
foreach (Match match in matches)
{
// 这里为啥不直接用.Value?
strResults.Add(match.Value);
}
Regex regx = new Regex(@"www\.(\w*\W*)\.(com.cn|com|cn|net)");
List<string> urllist = new List<string>();
MatchCollection mcurl = regx.Matches(sourcestr);
foreach (Match sk in mcurl)
{
urllist.Add(sk.Groups[1].Value);//urllist中icbc,baidu,sina,csdn
}
只需把list添加那句改成 urllist.Add(sk.Groups[0].Value);//改成0就可以了
当然你要匹配更完整的可以用http(s)?://([\w-]+\.)+[\w-]+(/[\w-./?%&=]*)?