c#과 함께 cdata에서 html을 구문 분석하기 위해 재가입합니다.
문제
CDATA에 랩핑 된 HTML 데이터를 구문 분석하고 싶습니다.
예로서 <![CDATA[<table><tr><td>Approved</td></tr></table>]]>
감사!
해결책
당신의 예를 다루는 표현은 것입니다
\<\!\[CDATA\[(?<text>[^\]]*)\]\]\>
여기서 그룹 "텍스트"에 HTML이 포함됩니다.
필요한 C# 코드는 다음과 같습니다.
using System.Text.RegularExpressions;
RegexOptions options = RegexOptions.None;
Regex regex = new Regex(@"\<\!\[CDATA\[(?<text>[^\]]*)\]\]\>", options);
string input = @"<![CDATA[<table><tr><td>Approved</td></tr></table>]]>";
// Check for match
bool isMatch = regex.IsMatch(input);
if( isMatch )
Match match = regex.Match(input);
string HTMLtext = match.Groups["text"].Value;
end if
"입력"변수는 제공 한 샘플 입력을 사용하기 위해 있습니다.
다른 팁
나는 이것이 엄청나게 단순 해 보일지 모르지만 string.replace ()를 시도 했습니까?
string x = "<![CDATA[<table><tr><td>Approved</td></tr></table>]]>";
string y = x.Replace("<![CDATA[", string.Empty).Replace("]]>", string.Empty);
이것을 처리하는 더 효율적인 방법이있을 것입니다. 그러나 당신이 그렇게 쉬운 것을 원할 수도 있습니다 ...
자세한 내용은 아니지만 매우 간단한 정규식은 설명하지 않은 복잡성이 없다면이를 일치시켜야합니다.
/<!\[CDATA\[(.*?)\]\]>/
CDATA 섹션을 찾는 동정인은 다음과 같습니다.
(?:<!\[CDATA\[)(.*?)(?:\]\]>)
Regex r = new Regex("(?<=<!\[CDATA\[).*?(?=\]\])");
왜 그런 간단한 작업에 Regex를 사용하고 싶습니까? 이거 한번 해봐:
str = str.Trim().Substring(9);
str = str.Substring(0, str.Length-3);
제휴하지 않습니다 StackOverflow