2010-01-28 6 views
0

동적 HTML 콘텐츠가 포함 된 문자열이 있습니다.RegEx를 사용하여 특정 HTML 태그 찾기 및 바꾸기

특정 HTML 태그의 모든 출현을 찾아서 바꿀 수 있기를 원하지만 그 안에있는 내용은 대체하고 싶지는 않습니다.

특정 HTML 태그는 테이블 (예 : TABLE, TR 및 TD)입니다. 태그는 속성을 포함 할 수도 있고 그렇지 않을 수도 있습니다. 어떻게하면 C#에서이 작업을 수행 할 수 있습니까?

미리 도움을 청하십시오!

+1

이 제품은 HTML 파서를위한 작업이 아니라 정규 표현식이다. –

+2

HTML과 XML에 regex를 사용하기 전에 질문이 왔습니다. Cthulhu가 관련된 StackOverflow에 대한 좋은 반응이 있습니다. ;) http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags/1732454#1732454 – FrustratedWithFormsDesigner

+3

아니요. 정규식을 사용하십시오. 인생 교훈. –

답변

4

Regex는 사용하지 마십시오. Html Agility Pack을 사용하십시오.

See this question 이유는 무엇입니까? 솔직히 나는이 진언에 의해 어리둥절하고

1
e = "(< *?/*)div(+?|>)"; 
    repl = "\\1boo\\2"; 

은 HTML에 대한 정규식을 사용하지 않을 모든 사람에 부과된다.

+0

문서 읽기 : http://www.codinghorror.com/blog/archives/001311.html – TrueWill

+1

읽었습니다. OP는 적어도 비난, 단언, 유머 및 과장이다. html이 다른 언어 클래스에 있다는 것을 이해하면 특정 케이스의 쿼리가 다루기 힘든 이유에 대한 원인을 찾을 수 있습니다. 그러나 이것이 HTML에서 수행해야 할 모든 종류의 작업이 HTML의 언어 클래스에 의해 영향을 받는다는 것을 의미하지는 않습니다. 틀림없이 위에서 언급 한 해결책은 주석 및 속성의 인용 된 내용에 대한 변환을 수행하므로 완전하지 않습니다. 그러나 적어도 코멘트를 제외하면 간단한 추가로 충분할 것입니다. – Mark

+0

따옴표 붙은 섹션을 제외해도 문제가되지 않습니다. – Mark

4

이 기능은 충분 있습니다

public static string ReplaceTag(string input, string soughtTag, string replacementTag) 
{ 
    return Regex.Replace(input, "(</?)" + soughtTag + @"((?:\s+.*?)?>)", "$1" + replacementTag + "$2"); 
} 
+0

비슷한 것을 시도하고 있지만 기울임 꼴 태그 ()를 검색 할 때 자신의 정규식 또한 이미지 태그 ()와 일치합니다. 이 솔루션은 전체 태그를 단일 캡처 그룹으로 반환하도록 수정했지만 내 오류를 수정하기 위해 완벽하게 작동했습니다. ()'[https : // regex101. com/r/nM5cJ8/3] – Nicholas

관련 문제