#c# #.net #regex #html-parsing
#c# #.net #регулярное выражение #html-синтаксический анализ
Вопрос:
С помощью текстового редактора WYSIWYG я вставляю теги span с классом «комментарий». Я хочу удалить все экземпляры тегов span и их содержимое из строки
Итак, как мне отсюда выбраться:
string content = "<p>sadf<span class="otherclass"><span class="comment">asdfsdafsdafsadfsdf</span></span></p>";
сюда:
content = "<p>sadf<span class="otherclass"></span></p>";
Я знаю о HtmlAgilityPack, но не хочу добавлять накладные расходы для HTML, который я контролирую. Я улучшаю решение для регулярных выражений.
РЕДАКТИРОВАТЬ: я хочу удалять интервалы только с помощью класса «комментарий».
Комментарии:
1. как вы думаете, почему добавление библиотек, предназначенных для решения имеющихся у вас проблем, требует дополнительных затрат? довольно общепринятый факт, что регулярное выражение не является хорошим кандидатом для синтаксического анализа HTML, потому что нельзя гарантировать, что оно будет правильно сформировано.
2. Я не думаю, что плохая практика должна быть увековечена только потому, что критерии подобраны таким образом, что это принудительно.
3. Потому что это похоже на простое решение для регулярных выражений. Между двумя тегами span с классом «comment» никогда не будет никакого HTML, только текст. Я просто не разбираюсь в регулярных выражениях. Представьте, что это не HTML.
Ответ №1:
Неадекватный ответ:
content = Regex.Replace(content, @"<spans class=""comment"">.*?</span>", "");
Комментарии:
1. неплохо. Я пропустил там другой класс
2. В общем, регулярного выражения недостаточно для таких целей.
3. В итоге я использовал «. ?», но спасибо за помощь</span>.
Ответ №2:
Выражение регулярного выражения для фильтрации вашей строки может быть <spans class="comment.*?span>
вам интересно попробовать RegexBuddy. это очень помогло мне разобраться в моих выражениях регулярных выражений.
Перехватите регулярное выражение в виде строки и замените эту строку против вас string content
Редактировать после того, как я понял, что вам нужно просто удалить <span class="comment"></span>
, как это сделал BLUEPIXY.