Я хотел бы проанализировать любые данные HTML, которые возвращаются в CDATA.
Например <![CDATA[<table><tr><td>Approved</td></tr></table>]]>
Спасибо!
Я хотел бы проанализировать любые данные HTML, которые возвращаются в CDATA.
Например <![CDATA[<table><tr><td>Approved</td></tr></table>]]>
Спасибо!
Выражение для обработки вашего примера будет
\<\!\[CDATA\[(?<text>[^\]]*)\]\]\>
Где группа «текст» будет содержать ваш HTML.
Код С#, который вам нужен:
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
Переменная "input" находится там только для того, чтобы использовать образец ввода, который вы предоставили.
Я знаю, это может показаться невероятно простым, но пробовали ли вы 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 для такой простой задачи? Попробуй это:
str = str.Trim().Substring(9);
str = str.Substring(0, str.Length-3);