здесь ... должно быть
дставляю себе функцию, которая, я думаю, будет использовать Regex, и она будет рекурсивной для таких случаев, как<p><strong></strong></p>
удалить все пустые теги HTML в строке. Это должно было бы учитывать пробелы, если это возможно. Не было бы сумасшедших случаев, когда символ <использовался в значении атрибута.
Я довольно ужасен в регулярных выражениях, но я думаю, что это возможно. Как ты можешь это сделать?
Вот метод, который я имею до сих пор:
Public Shared Function stripEmptyHtmlTags(ByVal html As String) As String
Dim newHtml As String = Regex.Replace(html, "/(<.+?>\s*</.+?>)/Usi", "")
If html <> newHtml Then
newHtml = stripEmptyHtmlTags(newHtml)
End If
Return newHtml
End Function
Однако мой текущий Regex в формате PHP, и он, похоже, не работает. Я не знаком с синтаксисом регулярных выражений .NET.
Всем, кто говорит, не используйте регулярные выражения: Мне любопытно, что шаблон будет независимо. Конечно, существует шаблон, который может сопоставить все открывающие / закрывающие начальные теги с любым количеством пробелов (или их нет) между тегами? Я видел регулярное выражение, которое сопоставляет теги HTML с любым количеством атрибутов, один пустой тег (например, просто<p></p>
) и т.д.
До сих пор я безуспешно пробовал следующие шаблоны регулярных выражений в вышеприведенном методе (например, у меня есть текстовая строка с пустыми тегами абзацев, которые даже не были удалены).
Regex.Replace(html, "/(<.+?>\s*</.+?>)/Usi", "")
Regex.Replace(html, "(<.+?>\s*</.+?>)", "")
Regex.Replace(html, "%<(\w+)\b[^>]*>\s*</\1\s*>%", "")
Regex.Replace(html, "<\w+\s*>\s*</\1\s*>", "")