본문 바로가기

.NET(C#,ASP)

[C#}정규식으로 URL 추출하기


문자열에서 URL만 추출하여 링크를 걸어줘야 할 때가 있다.
웹에서 이것 저것 뒤져보았으나 너무 길거나 잘동이 잘 안되거나 나의 쓰임새와 맞지 않아서 정규식을 공부하며 만들어 보았다.

private string GetUrl(String inputString)
{
 Regex r;
 Match m;
 //프로토콜부분 - 있을수도 없을수도
 string ptProtocol = "(?:(ftp|https?|mailto|telnet):\\/\\/)?";
 //domain의 기본 골격은 daum.net
 string domain = @"[a-zA-Z]\w+\.[a-zA-Z]\w+(\.\w+)?(\.\w+)?";
 //도메인 뒤에 추가로 붙는 서브url 및 파라미터들
 //이부분이 아직은 미흡하여 오류가 가끔 일어난다.
 string adds = "([:?=&/%.-]+\\w+)*";
 string result = "";

 r = new Regex(ptProtocol + domain + adds, RegexOptions.IgnoreCase | RegexOptions.Compiled);
 m = r.Match(inputString);
 int matchCount = 0; //Match의 내부를 들여다볼 때 쓰이는 변수
 while (m.Success)
 {
  result += "m.Value=[" + m.Value + "]" + Environment.NewLine;
  m = m.NextMatch();
 }
 return result;
}