1) ЗАМЕНИТЕ только несколько тегов html соответствующими тегами html.

Пример: замените тег h1 тегами h4 и замените тег div тегом p.

Вход:

<div><h1>First</h1><h1 align='center'>Second</h1></div><span>third</span>

Ожидаемый результат:

<p><h4>First</h4><h4 align='center'>Second</h4></p><span>third</span>

2) УДАЛИТЕ только несколько тегов HTML.

Пример: удалить теги div и h1.

Вход:

<div><h4>First</h4><h1 align='center'>Second</h1></div>

Ожидаемый результат:

<h4>First</h4>Second

К сведению: я пробовал использовать

Regex.Replace(html, @"</?h1>", "")

Но он не удаляется, если у тега есть атрибуты.

1
user2692805 3 Окт 2014 в 05:58

2 ответа

Лучший ответ

Вы можете использовать группы захвата в своем регулярном выражении и использовать их для замены в соответствии с документацией здесь: http : //msdn.microsoft.com/en-us/library/e7f5w83z

//to remove all h1 tags:
Regex.Replace(html, @"</?h1[^>]*>", "")

//to replace all div tags with p, keeping the same attributes:
Regex.Replace(html, @"(</?)div([^>]*>)", "$1p$2")

//to change the attributes of the div tags you will need two regexes:
//one for the opening tags
Regex.Replace(html, @"<div[^>]*>", "<p class='content'>")
//one for the closing tag
Regex.Replace(html, @"</div>", "</p>")

Последний пример был добавлен для ответа на комментарий, и причина, по которой его должно быть два, заключается в том, что новая часть строки (которая будет добавлена) отличается.

1
Daniel Ribeiro Moreira 3 Окт 2014 в 02:49

Вы пробовали регулярное выражение </?(h1|div)[^>]*>? (Или, если вы хотите удалить только теги h1, </?h1[^>]*>?)

0
Janaka Bandara 3 Окт 2014 в 02:05