从一堆文本中隔离https://*something*.com

时间:2016-08-24 00:52:38

标签: c# regex

我有一个:string BunchOfText,其中包含一个以https://开头并以.com结尾的链接。  我需要隔离该链接并将其放在另一个字符串中。 有什么建议吗? 编辑: 我的文字看起来像这样:

  

它在20世纪60年代推出了包含Lorem Ipsum段落的Letraset表格,最近还发布了包括Lorem Ipsum版本在内的Aldus PageMaker等桌面出版软件。   https://mydomain/RANDOMGENERATEDTEXT.com   我们为什么要用它?

我想要一个新字符串

string link ="https://mydomain/RANDOMGENERATEDTEXT.com"

到编辑时,用户:serhiyb,给了我一个完美的答案!

2 个答案:

答案 0 :(得分:0)

Regex linkParser = new Regex(@"https:\/\/(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.com\b([-a-zA-Z0-9@:%_\+.~#?&//=]*)?", RegexOptions.Compiled | RegexOptions.IgnoreCase);
string rawString = "some text with https://go.com link in it";
foreach(Match m in linkParser.Matches(rawString))
    Console.WriteLine(m.Value);

现场演示: https://dotnetfiddle.net/Zg8UDj

它会找到所有以https开头且属于.com区域的子域名的链接。

答案 1 :(得分:0)

您可以使用Regex找到链接,然后使用链接中的一个组来获取您想要的部分。

正则表达式:https:\/\/((www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256})\.com

括号中的部分是小组。

在C#代码中,使用如下:

Regex regex=new Regex(@"https:\/\/((www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256})\.com");
foreach(Match match in regex.Matches("test for https://www.domain.com"))
    string partBetween=match.Groups[1].Value; // www.domain