0

次の正規表現を理解しようとしていますが、正しく理解できないようです。誰かが私にアドバイスできますか?

一言で言えば、私は次のようなhtmlStringを持っています:

        htmlString = "<HTML><HEAD></HEAD><BODY>Here are some images.</br>1) <IMG style='MARGIN-BOTTOM: 20px; MARGIN-LEFT: 20px' align=right src='images/sample001.jpg'>2) <IMG style='MARGIN-BOTTOM: 25px; MARGIN-LEFT: 25px' align=right src='images/sample002.png'></br> And some docs as well.</br>1) href='javascript:parent.POPUP({url:'testDoc001.htm',type:'shared',width:600,height:645})'></br>2) href='javascript:parent.POPUP({url:'testDoc002.html',type:'shared',width:700,height:712})'></br></BODY></HTML>";

これは、C#、WPFで次のルーチンを実行します。


    private static List<string> ExtractData(string htmlString)
    {
        List<string> data = new List<string>();

        //***  Get The Images ***
        string pattern = @"<img .* src='(.+\.(jpg|bmp|png))'";

        Regex rgx = new Regex(pattern, RegexOptions.IgnoreCase);
        MatchCollection matches = rgx.Matches(htmlString);

        for (int i = 0, l = matches.Count; i < l; i++)
        {
            data.Add(matches[i].Value);
        }

        //***  Get Html Pages ***
        pattern = @"url:'([^']*)'";

        rgx = new Regex(pattern, RegexOptions.IgnoreCase);
        matches = rgx.Matches(htmlString);

        for (int i = 0, l = matches.Count; i < l; i++)
        {
            data.Add(matches[i].Value);
        }

        return data;
    }--------------------------------------------------------------------------------------

そして私が得る結果は次のとおりです:

[0] = "<IMG style ='MARGIN-BOTTOM:20px; MARGIN-LEFT:20px' align = right src ='images / sample001.jpg'> 2)<IMG style ='MARGIN-BOTTOM:25px; MARGIN-左:25px'align = right src ='images / sample002.png'"

[1] = "url:'testDoc001.htm'"

[2] = "url:'testDoc002.html'"

私が本当に欲しいのは:

[0] = "images / sample001.jpg"

[1] = "images / sample002.png"

[2] = "testDoc001.htm"

[3] = "testDoc002.html"

正規表現で間違っていることを誰かに教えてもらえますか?

ありがとう

4

1 に答える 1

1

このような作業には、 HTML Agility Packを使用することをお勧めします。他の人が述べたように、HTML を解析するための正規表現は、非常に特殊なケースを除いて、ひどいものです。とにかく、正規表現にはいくつかの問題があります。最初のものは次のようになります。

<img.+?src\s*=\s*\'(.*?\.(jpg|bmp|png))'
于 2012-04-16T14:07:33.347 に答える