当前位置:编程学习 > C#/ASP.NET >>

求取网址正则表达式

我有1连串字符。 我想把里面的网站取出来。比例1连串字符
adbcdddfdfdgfgfgfgfgsfdf134343434,2323,3343434
www.xxx.net,dfedfdf24444,www.yyyy.com,dfdfd922323232
dfdfdf
dfdfdf
www.zzz.au
dfdf
dfdfd
我要把
www.xxx.net
www.yyyy.com
www.zzz.au
这几个网址取出来,怎么取呢? 求正则表达式!

谢谢
--------------------编程问答-------------------- (?i)\bwww((?!www).)*\.(com|net|au) --------------------编程问答--------------------

        static void Main(string[] args)
        {
            string data = @"adbcdddfdfdgfgfgfgfgsfdf134343434,2323,3343434
www.xxx.net,dfedfdf24444,www.yyyy.com,dfdfd922323232
dfdfdf
dfdfdf
www.zzz.au
dfdf
dfdfd";
            foreach (Match m in Regex.Matches(data, @"\w+\.\w+\.\w+"))
                Console.WriteLine(m.Groups[0]);
        }
--------------------编程问答--------------------

void Main()
{
  string data = @"adbcdddfdfdgfgfgfgfgsfdf134343434,2323,3343434
www.xxx.net,dfedfdf24444,www.yyyy.com,dfdfd922323232
dfdfdf
dfdfdf
www.zzz.au
dfdf
dfdfd";
foreach (Match m in Regex.Matches(data, @"(?i)\bwww((?!www).)*?(com|net|au)\b"))
Console.WriteLine(m.Value);

/*
www.xxx.net
www.yyyy.com
www.zzz.au 
*/
}

--------------------编程问答--------------------

 string data = @"adbcdddfdfdgfgfgfgfgsfdf134343434,2323,3343434
www.xxx.net,dfedfdf24444,www.yyyy.com,dfdfd922323232
dfdfdf
dfdfdf
www.zzz.au
dfdf
dfdfd";
            string pattern=@"(?is)www[.]{1}((?!www).)*[.]{1}(com|net|au)";
            Regex regex = new Regex(pattern);
            MatchCollection mc = regex.Matches(data);
            foreach (Match m in mc)
            {
                Console.WriteLine(m.Value);
            }
            Console.ReadLine();
--------------------编程问答-------------------- 一定以www开头吗?

            string str = @"adbcdddfdfdgfgfgfgfgsfdf134343434,2323,3343434
www.xxx.net,dfedfdf24444,www.yyyy.com,dfdfd922323232
dfdfdf
dfdfdf
www.zzz.au
dfdf
dfdfd";
            foreach (Match m in Regex.Matches(str, @"(?is)www\.[^\.]+\.\w+\b"))
                Console.WriteLine(m.Value);

--------------------编程问答--------------------


www.[^.]+.(com|net|au)

--------------------编程问答--------------------
引用 5 楼 ojlovecd 的回复:
一定以www开头吗?
C# code

            string str = @"adbcdddfdfdgfgfgfgfgsfdf134343434,2323,3343434
www.xxx.net,dfedfdf24444,www.yyyy.com,dfdfd922323232
dfdfdf
dfdfdf
www.zzz.au
dfdf
dfdfd";
            ……

+1 --------------------编程问答-------------------- http开头不成吗?
ftp开头不成吗? --------------------编程问答--------------------
引用 4 楼 kingdom_0 的回复:
C# code

 string data = @"adbcdddfdfdgfgfgfgfgsfdf134343434,2323,3343434
www.xxx.net,dfedfdf24444,www.yyyy.com,dfdfd922323232
dfdfdf
dfdfdf
www.zzz.au
dfdf
dfdfd";
            string pattern=……


没用,如果测试字符换成
adbcdddfdfdgfgfgfgfgsfdf134343434,2323,3343434
www.xxx.net,dfedfdf24444,www.yyyy.com,dfdfd922323232
dfdfdf
dfdfdf
www.zzz.au
dfdf
dfdfd
com
就不行了。 你取的好像是第一个www到最后一个com的字符,而我要的不是这个结果哦 --------------------编程问答--------------------
引用 6 楼 porschev 的回复:
C# code


www.[^.]+.(com|net|au)



这方法可以,但是如果字符串修改成这个:
adbcdddfdfdgfgfgfgfgsfdf134343434,2323,3343434
www.xxx.net,dfedfdf24444,www.yyyy.kkk.com,dfdfd922323232
dfdfdf
dfdfdf
www.zzz.au
dfdf
dfdfd
我如何把
www.yyyy.kkk.com
www.xxx.net
www.zzz.au

取出来呢?

好像www.yyyy.kkk.com取不到。
请教 

谢谢

--------------------编程问答-------------------- 3楼的 试过没?

你举的几个例子 3楼的代码测试过 都没问题

(?i)\bwww((?!www).)*?(com|net|au)\b --------------------编程问答--------------------
引用 5 楼 ojlovecd 的回复:
一定以www开头吗?

C# code

            string str = @"adbcdddfdfdgfgfgfgfgsfdf134343434,2323,3343434
www.xxx.net,dfedfdf24444,www.yyyy.com,dfdfd922323232
dfdfdf
dfdfdf
www.zzz.au
dfdf
dfdfd";
   ……


请问如果没有www打头可取出来么?
比如:

string str = @"adbcdddfdfdgfgfgfgfgsfdf134343434,2323,3343434
xxx.net,dfedfdf24444,yyyy.com,dfdfd922323232
dfdfdf
dfdfdf
zzz.au
dfdf
dfdfd";

可以取出下面几个网址么?
xxx.net
yyyy.com
zzz.au --------------------编程问答--------------------
引用 11 楼 q107770540 的回复:
3楼的 试过没?

你举的几个例子 3楼的代码测试过 都没问题

(?i)\bwww((?!www).)*?(com|net|au)\b


请问如果没有www打头可取出来么?
比如:

string str = @"adbcdddfdfdgfgfgfgfgsfdf134343434,2323,3343434
xxx.net,dfedfdf24444,yyyy.com,dfdfd922323232
dfdfdf
dfdfdf
zzz.au
dfdf
dfdfd";

可以取出下面几个网址么?
xxx.net
yyyy.com
zzz.au

谢谢 ,你的代码我测试过没问题,就是如果不带www也不带http的情况下可以取出来么?

--------------------编程问答--------------------

            string str = @"adbcdddfdfdgfgfgfgfgsfdf134343434,2323,3343434
www.xxx.net,dfedfdf24444,www.yyyy.kkk.com,dfdfd922323232
dfdfdf
dfdfdf
www.zzz.au
dfdf
dfdfd
我如何把
www.yyyy.kkk.com
www.xxx.net
www.zzz.au
adbcdddfdfdgfgfgfgfgsfdf134343434,2323,3343434
xxx.net,dfedfdf24444,yyyy.com,dfdfd922323232
dfdfdf
dfdfdf
zzz.au
dfdf
dfdfd
";

            foreach (Match m in Regex.Matches(str, @"(?is)\w+\.\w+(\.\w+)*"))
                Console.WriteLine(m.Value);

--------------------编程问答-------------------- 谢谢,好像没问题, 我再测试下先
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,