Как удалить все HTML-теги, включая & nbsp, с помощью регулярного выражения в C #. Моя строка выглядит как
"<div>hello</div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div> </div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div>"
Ответы:
Если вы не можете использовать решение, ориентированное на анализатор HTML, для фильтрации тегов, вот простое регулярное выражение для него.
string noHTML = Regex.Replace(inputHTML, @"<[^>]+>| ", "").Trim();
В идеале вы должны сделать еще один проход через фильтр регулярных выражений, который заботится о нескольких пробелах как
string noHTMLNormalised = Regex.Replace(noHTML, @"\s{2,}", " ");
источник
<[^>]+?>
Ленивое совпадение ( согласно @David S.) могло бы сделать это немного быстрее, но просто использовал это решение в живом проекте - очень рад +1 :)Regex.Replace(inputHTML, @"<[^>]+>| ", " ")
Sound<b>Cloud</b>
на входе; у вас получится, чтоSound Cloud
он должен был быть удален,SoundCloud
потому что именно так он отображается в HTML.Я взял код @Ravi Thapliyal и создал метод: он прост и может не очищать все, но пока он делает то, что мне нужно.
public static string ScrubHtml(string value) { var step1 = Regex.Replace(value, @"<[^>]+>| ", "").Trim(); var step2 = Regex.Replace(step1, @"\s{2,}", " "); return step2; }
источник
Я уже давно пользуюсь этой функцией. Удаляет практически любой беспорядочный HTML-код, который вы можете добавить, и оставляет текст нетронутым.
private static readonly Regex _tags_ = new Regex(@"<[^>]+?>", RegexOptions.Multiline | RegexOptions.Compiled); //add characters that are should not be removed to this regex private static readonly Regex _notOkCharacter_ = new Regex(@"[^\w;&#@.:/\\?=|%!() -]", RegexOptions.Compiled); public static String UnHtml(String html) { html = HttpUtility.UrlDecode(html); html = HttpUtility.HtmlDecode(html); html = RemoveTag(html, "<!--", "-->"); html = RemoveTag(html, "<script", "</script>"); html = RemoveTag(html, "<style", "</style>"); //replace matches of these regexes with space html = _tags_.Replace(html, " "); html = _notOkCharacter_.Replace(html, " "); html = SingleSpacedTrim(html); return html; } private static String RemoveTag(String html, String startTag, String endTag) { Boolean bAgain; do { bAgain = false; Int32 startTagPos = html.IndexOf(startTag, 0, StringComparison.CurrentCultureIgnoreCase); if (startTagPos < 0) continue; Int32 endTagPos = html.IndexOf(endTag, startTagPos + 1, StringComparison.CurrentCultureIgnoreCase); if (endTagPos <= startTagPos) continue; html = html.Remove(startTagPos, endTagPos - startTagPos + endTag.Length); bAgain = true; } while (bAgain); return html; } private static String SingleSpacedTrim(String inString) { StringBuilder sb = new StringBuilder(); Boolean inBlanks = false; foreach (Char c in inString) { switch (c) { case '\r': case '\n': case '\t': case ' ': if (!inBlanks) { inBlanks = true; sb.Append(' '); } continue; default: inBlanks = false; sb.Append(c); break; } } return sb.ToString().Trim(); }
источник
var noHtml = Regex.Replace(inputHTML, @"<[^>]*(>|$)| |‌|»|«", string.Empty).Trim();
источник
Я использовал код @RaviThapliyal и @Don Rolling, но внес небольшие изменения. Поскольку мы заменяем & nbsp пустой строкой, но вместо этого & nbsp следует заменить пробелом, поэтому добавлен дополнительный шаг. Это сработало для меня как шарм.
public static string FormatString(string value) { var step1 = Regex.Replace(value, @"<[^>]+>", "").Trim(); var step2 = Regex.Replace(step1, @" ", " "); var step3 = Regex.Replace(step2, @"\s{2,}", " "); return step3; }
Используется & nbps без точки с запятой, потому что он форматировался переполнением стека.
источник
это:
будет соответствовать любому тегу или
string regex = @"(<.+?>| )"; var x = Regex.Replace(originalString, regex, "").Trim();
тогда x =
hello
источник
Очистка HTML-документа связана с множеством хитрых вещей. Этот пакет может помочь: https://github.com/mganss/HtmlSanitizer
источник
HTML в своей основной форме - это просто XML. Вы можете проанализировать свой текст в объекте XmlDocument, а в корневом элементе вызвать InnerText для извлечения текста. Это удалит все HTML-теги в любой форме, а также обработает специальные символы, такие как & lt; & nbsp; все за один раз.
источник
Вы можете проверить это здесь: https://regex101.com/r/kB0rQ4/1
источник