이번 주제는 HTML 태그의 일부를 제거하는 정규식에 대해 알아보도록 합시다. 정규표현식으로 원하는 태그 값을 매칭한 다음에, delegate match, 즉 MatchEvaluator를 사용하여 제거하는 예제자료입니다.
HTML 태그 제거 정규식
다음과 같은 문자로 된 태그를 정리해 봅시다.
line = "</a></div><div class=\"separator\" style=\"clear: both; text-align: center;\">beomsang</div><div class=\"separator\" style=\"clear: both; text-align: center;\">";
delegate match 사용하기
<pre>로 명명한 네임드 그룹은 제거하지 않기 위해 임의로 추가하였습니다. div 태그가 > 문자아 아닌 그리디 정규표현식을 찾고, </div>로 닫히는 순간까지 캡처하여 정리합니다. delegate를 호출하여 MatchEvaluator를 사용하였습니다. 해당 메서드는 캡처 그룹에 대해 네임드 그룹 두 개의 값으로 리플레이스 하는 역할을 합니다.
line = Regex.Replace(line, "(?<pre></a></div>)<div[^>]+>(?<content>[^<]+)</div>", delegate (Match match)
{
return $"{match.Groups["pre"].Value}<p>{match.Groups["content"].Value}</p>";
});