2011-12-13 3 views
0

나는 다음과 같은 텍스트에서 태그를 제거하려고 시도하고있다 : 그것은 두 줄에 얼마나RegexOptions.Multiline을 사용하는 경우에도 내 정규식이 여러 줄에 걸쳐있는 HTML 태그와 일치하지 않는 이유는 무엇입니까?

<P style=""MARGIN: 0in 0in 0pt"" class=MsoNormal><SPAN 
style=""COLOR: #1f497d""><FONT size=3 face=Calibri> </FONT></SPAN></P> 

공지 사항. 그래서 내가 사용하려고하면 :

Regex _html = new Regex("<.*?>", RegexOptions.Multiline); 
tempHtml = _html.Replace(tempHtml, string.Empty); 

는 그것은 <p>, <font>, </font>, </span></p> 태그와 일치하지만 <span> 태그를 일치하지 않는 것 같습니다.

내가 뭘 잘못하고 있니?

+2

이 구문 분석을하려면 Regex 대신 HtmlAgilityPack을 사용해야합니다. 훨씬 더 생산적입니다. –

+0

나는 아마해야한다. 동료로부터이 코드를 물려 받았고 그는 MS 워드로 인해 기존의 html 스트립 핑 코드를 사용할 수없고 실제 HTML을 출력하지 못하는 것 같았습니다. 나는 그것이 얼마나 진실한지를 모른다. – KallDrexx

+1

이 정규식도 작동합니다 : <(.|\s)*?> – Alex

답변

1

REGEX가 C#과 어떻게 작동하는지 모르겠지만 대부분의 경우 < 및>을 이스케이프 처리해야합니다. 이 패턴은 PHP에서 근무 :

Regex _html = new Regex("<.*?>", RegexOptions.Singleline); 
tempHtml = _html.Replace(tempHtml, string.Empty); 

다음 이동 다운로드 Expresso과 :

\<.*?\> 
3

RegexOptions.Multiline\Z\A의 의미를 처리합니다. RegexOptions.Singleline.인 경우 모든 문자 의미는이고, 줄 바꿈 (= true) 또는 줄 바꿈 (= false)은 제외됩니다.

태그에 줄 바꿈을 포함 시키려면 RegexOptions.Singleline을 사용하십시오.

하지만 Bryan Crosby는 정규식 대신 HtmlAgilityPack을 사용하여 HtmlAgilityPack을 사용하라고 조언했습니다.

+0

+1 훨씬 명확 : –

1

을 내가 무엇 Fischermaen 말하려고하는 것은 당신이 잘못된 옵션을 사용하고 하나의 라인 모드를 사용하는 것이 생각 이 물건을 쉽게 시험해보고 표현을 테스트 할 수 있습니다.

+0

+1 익스프레스 링크. 훌륭한 도구! – Fischermaen

관련 문제