C# 正则表达式来解析某些html标记

C# 正则表达式来解析某些html标记,c#,.net,regex,C#,.net,Regex,我有一个字符串,其中一部分包含在html标记中,主要是span和strong。我想把它分成几个部分,并得到每个部分的文本、标记名和类属性 Take <span class="victoria line-text">Victoria line</span> to <strong>Highbury & Islington</strong> 它不是一个有效的XML/HTML(只是一个包含部分标记的文本),因此我决定使用一些简单的正则表达式来解析

我有一个字符串,其中一部分包含在html标记中,主要是spanstrong。我想把它分成几个部分,并得到每个部分的文本、标记名和类属性

Take <span class="victoria line-text">Victoria line</span> to <strong>Highbury & Islington</strong>
它不是一个有效的XML/HTML(只是一个包含部分标记的文本),因此我决定使用一些简单的正则表达式来解析我需要的值。 我用这个代码获得了跨度信息

        var str = "Take <span class=\"victoria line-text\">Victoria line</span> to <strong>Highbury & Islington</strong>";
        Regex regex = new Regex("<span class=\"(.*?)\">(.*?)</span>");
        if(regex.IsMatch(str))
        {
            MatchCollection collection = regex.Matches(str);
            foreach(Match m in collection)
            {
                string text = m.Groups[2].Value;  //Victoria line
                string classes = m.Groups[1].Value; //victoria line-text
                Console.WriteLine(text + "   " + classes);
            }
        }
var str=“乘坐维多利亚线前往海布里和伊斯林顿”;
正则表达式正则表达式=新正则表达式(“(*?”);
if(regex.IsMatch(str))
{
MatchCollection collection=regex.Matches(str);
foreach(集合中匹配m)
{
string text=m.Groups[2]。Value;//维多利亚行
string classes=m.Groups[1].Value;//维多利亚线文本
Console.WriteLine(文本+“”+类);
}
}
是否可以通过正则表达式获取所有部件的信息


输入将包含可能包含无效的未转义html字符的纯文本(即&,“”),只是它的一部分用span或strong标记包装。XmlDocument或其他库会抛出异常,因为它不是一个合适的html。

使用正则表达式解析html总是很棘手,所以我不推荐在这里使用正则表达式。我更愿意推荐的是使用已经很好地实现了这一点的现有库。看看或-两者都是ava像裸体一样可爱


注意:不要担心它没有被包装在里面-你可以自己做,只要试着解析
{p>{yourString}

如果它是html输入,为什么不使用html解析器呢?我说它没有包含在里面,文本可以包含&请阅读这个答案-
        var str = "Take <span class=\"victoria line-text\">Victoria line</span> to <strong>Highbury & Islington</strong>";
        Regex regex = new Regex("<span class=\"(.*?)\">(.*?)</span>");
        if(regex.IsMatch(str))
        {
            MatchCollection collection = regex.Matches(str);
            foreach(Match m in collection)
            {
                string text = m.Groups[2].Value;  //Victoria line
                string classes = m.Groups[1].Value; //victoria line-text
                Console.WriteLine(text + "   " + classes);
            }
        }