求高手给一个c#正则匹配html标签的方法

html-css09

求高手给一个c#正则匹配html标签的方法,第1张

你只是声明了正则,未做匹配,假定那个字符串叫str,在你上面代码的下面写

foreach (Match m in No_a.Matches(str2))

  Console.WriteLine(m.Groups[1].Value)//每个m.Groups[1].Value就是你要的内容,自己按需要处理

//要匹配的字符串

        string text = "<span style=\"color:#282828font-family:'Microsoft YaHei', 'Hiragino Sans GB'font-size:14pxline-height:24px\">环境很好 特安静 去了好几次了 特喜欢门口的吊椅 美女店长超温柔 夏天很热的时候去喝柚子茶跟店长说多加冰半杯都没事 店长却说不行 可以再我喝下一些后再给我装点冰都不能那么干 那样太坑人了  哇 很难得啊 比起一些其他店里给你放很多冰不舍得加饮料的店强太多了就冲这点 也会经常去的 蛋挞也超好吃 而且她家东西都是空气炸锅做的低脂肪 不是油炸食品 吃多了也不怕长胖 简直太爱这家店了 以后会经常去的</span>"

        //正则表达式

        string pattern = @"<[^\s]+[^>]*[^=]+=[\"\']?(([^:]+):([^:]*))*[\"\']?[^>]*>"

        //使用RegexOptions.IgnoreCase枚举值表示不区分大小写

        Regex r = new Regex(pattern, RegexOptions.IgnoreCase)

        //使用正则表达式匹配字符串,仅返回一次匹配结果

        Match m = r.Match(text)

        while (m.Success)

        {

                //显示匹配开始处的索引值和匹配到的值

                System.Console.WriteLine("Match=[" + m + "]")

                CaptureCollection cc = m.Captures

                foreach (Capture c in cc)

                {

                        Console.WriteLine("\tCapture=[" + c + "]")

                }

                for (int i = 0 i < m.Groups.Count i++)

                {

                        Group group = m.Groups[i]

                        System.Console.WriteLine("\t\tGroups[{0}]=[{1}]", i, group)

                        for (int j = 0 j < group.Captures.Count j++)

                        {

                                Capture capture = group.Captures[j]

                                Console.WriteLine("\t\t\tCaptures[{0}]=[{1}]", j, capture)

                        }

                }

                //进行下一次匹配.

                m = m.NextMatch()

        }

(?<=>)[^<>]+(?=<)

假如html标签里面有一句:

String a = "<style type=\"text/css\">div \n" +

"{ margin: 0padding: 0outline: 0}</style>"

我如何把这一句取出来呢,包括标签。

用正则表达式:<style([\\s\\S]*)</style>

扩展资料:

正则表达式匹配HTML标签

方法一:

var str = '<p class="odd" id="odd">123</p>'

var pattern = /<\/?[a-zA-Z]+(\s+[a-zA-Z]+=".*")*>/g

console.log(str.match(pattern))

方法二:

var str = '<p class="odd" id="odd">123</p>'

var pattern = /<[^>]+>/g

console.log(str.match(pattern))

方法三:

var str = '<input type="text" value=">" name="username" />'

var pattern = /<(?:[^"'>]|"[^"]*"|'[^']*')*>/g

console.log(str.match(pattern))

说明:()表示捕获分组,()会把每个分组里的匹配的值保存起来,使用$n(n是一个数字,表示第n个捕获组的内容)

(?:)表示非捕获分组,和捕获分组唯一的区别在于,非捕获分组匹配的值不会保存起来

没有引用的需求的话,采用非捕获性分组,更为简洁;

方法四:

var str = '<input type="text" value=">" name="username" />'

var pattern = /<(?:[^"'>]|(["'])[^"']*\1)*>/g

console.log(str.match(pattern))

</script>