Распознать шаблон для извлечения слов из C# HTML Encoded String

Я ищу помощь в распознавании шаблона из строки, закодированной в HTML.

Если у меня есть строка с кодировкой HTML, например:

string strHTMLText=@"<p>Pellentesque habitant [[@Code1]] morbi tristique senectus [[@Code2]] et netus et malesuada fames ac [[@Code3]] turpis egestas.</p>"

Мне нужно извлечь слова [[@Code1]], [@Code2], [[@Code3]], которые являются динамическими и их количество неизвестно. Эти слова использовались для замены других значений в предоставленном тексте HTML.

Я хочу распознать шаблон [[@что-то]] и заполнить все вхождения в массиве и т. д., чтобы я мог обработать эти значения, чтобы получить соответствующее значение из базу данных позже.


person Cyberpks    schedule 12.09.2012    source источник
comment
Похоже, вам нужно регулярное выражение.   -  person lc.    schedule 12.09.2012


Ответы (3)


Пока кто-нибудь не придумает решение для регулярных выражений, для развлечения я сделал это для вас:

string strHTMLText=@"<p>Pellentesque habitant [[@Code1]] morbi tristique senectus [[@Code2]] et netus et malesuada fames ac [[@Code3]] turpis egestas.</p>";

IEnumerable<string> arr = strHTMLText.Split(new char[] {'['};
List<string> output = new List<string>();
foreach(var item in arr)
{
string placeHolder = item.Substring(0,item.IndexOf("]");
output.Add(placeHolder);
}

Чтобы получить вывод в массив:

output.ToArray();
person Jeremy Thompson    schedule 12.09.2012
comment
Спасибо за сверхбыструю помощь... :), сейчас попробую ваше решение. - person Cyberpks; 12.09.2012

Вы можете использовать регулярные выражения.

Попробуйте использовать это выражение

Regex exp = new Regex("\[.+?\]")
MatchCollection mc = exp.matches(<Your string here>);
foreach(Match m in mc)
{
   String code = m.value;
}

Я не тестировал этот код, и это быстрый и грязный псевдокод, поэтому, пожалуйста, потерпите меня.

person Murtuza Kabul    schedule 12.09.2012

person    schedule
comment
Спасибо за точное решение... Это было действительно быстро и легко реализовать. - person Cyberpks; 12.09.2012