문자열에서 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;
}