使用C#搜索字符串

时间:2012-11-01 16:56:44

标签: c# regex string

我有以下字符串"</script><div id='PO_1WTXxKUTU98xDU1'><!--DO NOT REMOVE-CONTENTS PLACED HERE--></div>"

我需要从div标签中获取属性值。如何使用C#检索它。

4 个答案:

答案 0 :(得分:1)

避免使用regex

解析html

Regex不是解析HTML个文件的好选择..

HTML不严格,格式也不规则..

使用htmlagilityPack

你可以用htmlagilityPack这样做。

HtmlDocument doc = new HtmlDocument();
doc.Load(yourStream);
List<string> itemList = doc.DocumentNode.SelectNodes("//div[@id]")//selects all div having id attribute
.Select(x=>x.Attributes["id"].Value)//select the id attribute value
.ToList<string>();
//itemList will now contain all div's id attribute value

答案 1 :(得分:0)

严格解决问题,解决问题的方法之一就是隔离div元素,将其解析为XElement,然后以此方式提取属性值。

        string bobo = "</script><div id='PO_1WTXxKUTU98xDU1'><!--DO NOT REMOVE-CONTENTS PLACED HERE--></div>";
        string justDiv = bobo.Substring(bobo.IndexOf("<div"));
        XElement xelem = XElement.Parse(justDiv);
        var id = xelem.Attribute("id");
        var value = id.Value;

肯定有很多方法可以解决这个问题,但这个方法可以解答邮件。

答案 2 :(得分:0)

如果你是一个受虐狂,你可以做这个老派VB3风格:

        string input = @"</script><div id='PO_1WTXxKUTU98xDU1'><!--DO NOT REMOVE-CONTENTS PLACED HERE--></div>";
        string startString = "div id='";

        int startIndex = input.IndexOf(startString);

        if (startIndex != -1)
        {
            startIndex += startString.Length;
            int endIndex = input.IndexOf("'", startIndex);
            string subString = input.Substring(startIndex, endIndex - startIndex);
        }

答案 3 :(得分:-1)

看起来像这样的.NET Regex可以解决这个问题

^</script><div id='(?<attrValue>[^']+)'.*$
然后,您可以将值保持为

MatchCollection matches = Regex.Matches(input, @"^</script><div id='(?<attrValue>[^']+)'.*$");
if (matches.Count > 0)
{
    var attrValue = matches[0].Groups["attrValue"];
}