Я бы потрепал свою ногу перед тем, как использовать регулярное выражение для разбора и изменения HTML.
Используйте XSL или DOM .
Два комментария попросили уточнить. Подстановка регулярного выражения работает в конкретном случае в вопросе OP, но в целом регулярные выражения не являются хорошим решением. Регулярные выражения могут соответствовать регулярным языкам , то есть последовательности ввода, которая может быть принята конечным автоматом. HTML может содержать вложенные теги любой произвольной глубины, поэтому это не обычный язык.
Какое это имеет отношение к вопросу? Использование регулярного выражения для вопроса ОП в том виде, как оно написано, работает, но что, если содержимое между тегами <customtag>
содержит другие теги? Что если в тексте встречается буквальный символ <
? Прошло 11 месяцев с тех пор, как Джон Такабери задал вопрос, и я думаю, что за это время сложность его проблемы могла увеличиться.
Регулярные выражения - отличные инструменты, и я использую их постоянно. Но использование их вместо реального парсера для ввода, которое нужно, будет работать только в очень простых случаях. Практически неизбежно, что эти случаи выходят за рамки возможностей регулярных выражений. Когда это произойдет, у вас возникнет желание написать более сложное регулярное выражение, но оно быстро становится очень трудоемким для разработки и отладки. Будьте готовы отказаться от решения регулярного выражения при расширении требований к синтаксическому анализу.
XSL и DOM - это две стандартные технологии, разработанные для работы с разметкой XML или XHTML. Обе технологии знают, как анализировать файлы структурированной разметки, отслеживать вложенные теги и позволяют преобразовывать атрибуты тегов или содержимое.
Вот пара статей о том, как использовать XSL с C #:
Вот пара статей о том, как использовать DOM с C #:
Вот библиотека .NET, которая помогает операциям DOM и XSL с HTML: