내부의 HTML 태그를 모두 삭제하면 읽기에 어려움이 있을 수 있습니다(a, img 태그 등).
정규식에서는 그대로 두는 것이 가장 좋습니다. 이 문자열은 이해하기 매우 쉽지만 특정 문자열(문자가 아닌 문자열, 특정 문자열이 아닌 무언가)이 포함되어 있는지 판단하는 방법은 실제로
<(?!((/?\s?li)|(/?\s?ul)|(/?\s?a)|(/?\s?img)|(/?\s?br)|(/?\s?span)|(/?\s?b)))[^>]+>
이 정규식입니다. 규칙은 HTML 태그에 li / ul / a / img / br /span / b가 포함되어 있지 않은지 확인하려면 위의 요구 사항에 관한 한 여기에 나열된 태그 이외의 HTML 태그를 삭제해야 한다는 것입니다. 오랜만에 알아냈습니다.
(?!exp)는 exp
/?s? 뒤에 오지 않는 위치와 일치합니다. 처음에는 < 뒤에 쓰려고 했으나 테스트에 실패했습니다.
다음은 보관할 TAG를 연결하고 정규식을 생성한 다음 불필요한 TAG를 삭제하는 간단한 함수입니다...
private static string RemoveSpecifyHtml(string ctx) { string[] holdTags = { "a", "img", "br", "strong", "b", "span" };//要保留的 tag // <(?!((/?\s?li)|(/?\s?ul)|(/?\s?a)|(/?\s?img)|(/?\s?br)|(/?\s?span)|(/?\s?b)))[^>]+> string regStr = string.Format(@"<(?!((/?\s?{0})))[^>]+>", string.Join(@")|(/?\s?", holdTags)); Regex reg = new Regex(regStr, RegexOptions.Compiled | RegexOptions.Multiline | RegexOptions.IgnoreCase); return reg.Replace(ctx, ""); }
수정:
위 정규식 표현식을 유지하면 실제 작업 중에도 링크가 유지됩니다. a를 유지하면 addr도 유지됩니다. 해결 방법은
<(?!((/?\s?li\b)|(/?\s?ul)|(/?\s?a\b)|(/?\s?img\b)|(/?\s?br\b)|(/?\s?span\b)|(/?\s?b\b)))[^>]+> private static string RemoveSpecifyHtml(string ctx) { string[] holdTags = { "a", "img", "br", "strong", "b", "span", "li" };//保留的 tag // <(?!((/?\s?li\b)|(/?\s?ul\b)|(/?\s?a\b)|(/?\s?img\b)|(/?\s?br\b)|(/?\s?span\b)|(/?\s?b\b)))[^>]+> string regStr = string.Format(@"<(?!((/?\s?{0})))[^>]+>", string.Join(@"\b)|(/?\s?", holdTags)); Regex reg = new Regex(regStr, RegexOptions.Compiled | RegexOptions.Multiline | RegexOptions.IgnoreCase); return reg.Replace(ctx, ""); }
더 많은 asp.net 정규식을 추가하는 것입니다. 지정된 HTML을 삭제하려면 태그 코드 관련 기사는 PHP 중국어 사이트를 주목해주세요!