Как написать регулярное выражение, чтобы остановить заменить & NBSP; символ между тегами span или div?

Я хочу изменить свое нижнее регулярное выражение таким образом, чтобы оно не заменяло / не удаляло   Если там есть   найдено на странице aspx. затем пропустите для замены на пустой символ

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

В моем коде aspx я написал <span class='clscode'>&nbsp;</span> в этом типе тега внутренний текст, который я написал &nbsp; персонаж.

Вот мой код C#.

using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.Linq;
using System.Text.RegularExpressions;
public partial class TestPage : System.Web.UI.Page
{
 protected void Page_Load(object sender, EventArgs e)
 {
 /// my code 
 }

    private static readonly Regex t = new Regex(@">\s+<", RegexOptions.Compiled);
    private static readonly Regex lb = new Regex(@"\n\s+", RegexOptions.Compiled);
    protected override void Render(HtmlTextWriter writer)
    {
        using (HtmlTextWriter htmlwriter = new HtmlTextWriter(new System.IO.StringWriter()))
        {
            base.Render(htmlwriter);
            string html = htmlwriter.InnerWriter.ToString();
            html = t.Replace(html, "> <");
            html = lb.Replace(html, string.Empty);
            writer.Write(html.Trim());
        }
    }
}

Мне нужен вывод ниже типа. например: моя страница имеет так много Это тестовый пример

<div id="dvtest"> <space> <space> <space>
<span>&nbsp;</span><space> <space>
<div id='test2'> sample &nbsp;&nbsp;text&nbsp;    </div></div>

//... как эти теги. Мне нужен вывод, как это.

<div id="dvtest"><span>&nbsp;</span><div id='test2'>sample &nbsp;&nbsp;text&nbsp;</div></div>

Примечание: здесь <space> означает невидимый символ пробела

2 ответа

Попробуй вот так

Если вы не можете использовать решение, ориентированное на анализатор HTML, для фильтрации тегов, вот простое регулярное выражение для этого.

string noHTML = Regex.Replace(inputHTML, @"\n$", "").Trim();

Regex Demo

protected override void Render(HtmlTextWriter writer)
{
    using (HtmlTextWriter htmlwriter = new HtmlTextWriter(new System.IO.StringWriter()))
    {
        string re1 = "( )";
        base.Render(htmlwriter);
        string html = htmlwriter.InnerWriter.ToString();
        Regex r = new Regex(re1, RegexOptions.IgnoreCase | RegexOptions.Singleline);
        Match m = r.Match(html);
        if (m.Success)
        {
            String c1 = m.Groups[1].ToString();

            html = html.Replace(c1.ToString(), "");

            writer.Write(html);

            // Console.Write("(" + c1.ToString() + ")" + "\n");
        }


    }
}
Другие вопросы по тегам