1 2 3 4 5 6 7 8 9 10 11 12 |
string pattern = string.Empty; Regex r; Match m; r = new Regex(pattern, RegexOptions.IgnoreCase | RegexOptions.Compiled); for (m = r.Match(strHtml); m.Success; m = m.NextMatch()) { if (string.IsNullOrEmpty(m.Groups[0].Value)) continue; urlList.Add(m.Groups[0].Value); } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
@"((http|https|ftp|mms)://[0-9a-z-]+(.[_0-9a-z-]+)+(:[0-9]{2,4})?/?)"; // domain+port @"([.~_0-9a-z-]+/?)*"; // sub roots or sub directory @"(S+.[_0-9a-z]+??)?"; // file & extension string @"([_0-9a-z&=-]+)*"; // parameter @"^d{5}$"; // 미국 우편 번호와 같은 5자리 숫자입니다. @"^(d{5})|(d{5}-d{4}$"; // 5자리 숫자 또는 5자리 숫자-대시-4자리 숫자입니다. 미국 우편 번호 또는 미국 우편 번호+4 형식과 일치합니다. @"^(d{5}(-d{4})?$"; // 앞의 예와 같지만 더 효율적입니다. ?를 사용하면 교체를 통해 별도의 패턴 두 개를 개별적으로 비교해야 하는 대신에 패턴의 4자리 부분을 선택적으로 입력할 수 있습니다. @"^[+-]?d+(.d+)?$"; // 실수와 일치하며 선택적으로 기호를 사용할 수 있습니다. @"^[+-]?d*.?d*$"; // 위의 예와 같지만 빈 문자열에도 일치합니다. @"^(20|21|22|23|[01]d)[0-5]d$"; // 24시간 값과 일치합니다. @"/*.**/" // C 스타일 주석 /* … */의 내용과 일치합니다. @"(?:(ftp|https?|mailto|telnet):\/\/)?" //프로토콜부분 - 있을수도 없을수도 @"[a-zA-Z]w+.[a-zA-Z]w+(.w+)?(.w+)?" //domain의 기본 골격은 daum.net @"([:?=&/%.-]+\w+)*"; //도메인 뒤에 추가로 붙는 서브url 및 파라미터들 이부분이 아직은 미흡하여 오류가 가끔 일어난다. |