2012-08-10 4 views
1

<과 같은 일부 html 빈 태그를 대체하고 싶습니다. /> (.b, h1, ...은 아니지만 br, hr, ...)Regex - 일부 html 태그 바꾸기

저는 생각합니다. Regex.Replace (myString, "< ..? />", "")하지만 br와 hr을 어떻게 제외시킬 수 있는지 모르겠다.

아무도 도와 줄 수 있습니까?

Thx! 당신은 당신이하고자하는 태그를 알고있는 경우

+0

[RegEx는 XHTML 자체 포함 태그를 제외한 공개 태그와 일치 할 수 있음] (http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags) –

+0

이 경우에는 용서받을 수 있다고 생각합니다. – mmdemirbas

+3

@DavidB 특정 문자열 패턴을 인식하고 바꾸는 것은 구문 분석이 아닙니다. –

답변

3

이 같은 것을보십시오 :

(?:< *)(?!(?:br|hr)) *\w+ *\/ *\> 

는 BR 어떤 태그 추가 | 시간의 일부를 (사용하여 구분 '|')이 일치하지 않는.

+0

여기에 대해 궁금한 점이 있으시면 여기를 참조하십시오. http://msdn.microsoft.com/en-us/library/az24scfc.aspx – crlanglois

+0

사례에서 약간 더 단순한 버전 : <(?! br | hr) (\ w) + /> – crlanglois

3

, 당신은 이런 식으로 그것을 할 수 : 괄호 내

Regex.Replace(myString, "<(b|p|div|span) />", "") 

는 모든 옵션이 파이프로 구분됩니다. 이 같은 패턴이 일치하고이를 대체 할

1

사용 : (TAG1|TAG2|TAG3|...) 당신이 처리하는 모든 태그입니다

<(TAG1|TAG2|TAG3|...)\s*/?> 

는 파이프로 구분. HTML 태그는 대/소문자를 구분하지 않으므로 정규 표현식에서 대/소문자를 구분하지 않도록 지정해야합니다. 작동 원리

var exp = new Regex("<(b|h1)\s*/?>", RegexOptions.IgnoreCase); 

:

  • 괄호 안의 비트가 그냥 처리해야 태그를 식별 예를 들어, 당신이 나와 두,이 같은 정규식을 만들 수 있습니다 인식합니다.
  • \s*은 0 개 이상의 공백 문자를 인식합니다. (HTML 표준이 태그 이름 앞에 공백을 허용하지 않기 때문에 이들 중 하나는 정규식 시작시 필요하지 않습니다.)
  • /?은 선택적으로 '/'와 일치합니다. (이것은 HTML 사양이 항상 필요하지 않았기 때문에, 빈 태그에 /를 사용하지 않는 HTML 처리에 대한 유연성이 단지입니다.)

당신은과 같이 태그를 제거하는 데 사용할 수 있습니다 :

var strippedText = exp.Replace(input, String.Empty);