+ -
当前位置:首页 → 问答吧 → 新开一贴,继续求解!正则匹配的问题!!!!!!!!!!!!!!!!!!!

新开一贴,继续求解!正则匹配的问题!!!!!!!!!!!!!!!!!!!

时间:2011-12-16

来源:互联网

C# code

string altValue = "alt的值";
    protected void Page_Load(object sender, EventArgs e)
    {
        string s = "<img src='a.jpg' alt=\"nihao\" /><img src='a.jpg' title='aaa' /><img src='b.jpg' /><img src='b.jpg' alt='aaa' /><img src='x.jpg' alt=xxx />";
        MatchEvaluator me = new MatchEvaluator(ABC);
        string r = Regex.Replace(s, @"(?is)<img[^>]*/>", ABC);
        Response.Write(Server.HtmlEncode(r));
    }
    private string ABC(Match match)
    {
        Match innerMatch = Regex.Match(match.Value, @"(?is)alt=(['""])(?<altValue>.*?)\1");
        if (innerMatch.Success)
        {
            if (innerMatch.Groups["altValue"].Value.Length > 0)
                return match.Value;
            else
                return Regex.Replace(match.Value, @"(?is)(?<=alt=['""]).*?(?=['""])", altValue);
        }

        else
            return match.Value.Replace("/>", " alt='" + altValue + "'/>");
    }

//最后想返回如下结果,改怎么改?
 string s = "<img src='a.jpg' alt=\"alt的值\" /><img src='a.jpg' title='aaa' alt=\"alt的值\" /><img src='b.jpg' alt=\"alt的值\" /><img src='b.jpg' alt=\"alt的值\" /><img src='x.jpg' alt=\"alt的值\"/>";


作者: qiudong_5210   发布时间: 2011-12-16

你想干吗

作者: q107770540   发布时间: 2011-12-16

C# code

void Main()
{
    string s = "<img src='a.jpg' alt=\"nihao\" /><img src='a.jpg' title='aaa' /><img src='b.jpg' /><img src='b.jpg' alt='aaa' /><img src='x.jpg' alt=xxx />";
    string altValue = "\"alt的值\""; 
    s=Regex.Replace(s,@"(?i)<img[^>]*?>",m=>
        {
        return Regex.IsMatch(m.Value,"\\balt=")?Regex.Replace(m.Value,@"(?i)(?<=<img[^>]*?alt=).*?(?=\s*/>)",altValue)
                                            :Regex.Replace(m.Value,@"/?>","alt="+altValue+"$0");
        });
        Console.WriteLine(s);
        //<img src='a.jpg' alt="alt的值" /><img src='a.jpg' title='aaa' alt="alt的值"/><img src='b.jpg' alt="alt的值"/><img src='b.jpg' alt="alt的值" /><img src='x.jpg' alt="alt的值" />
}

作者: q107770540   发布时间: 2011-12-16

简化一下:
C# code

void Main()
{
    string s = "<img src='a.jpg' alt=\"nihao\" /><img src='a.jpg' title='aaa' /><img src='b.jpg' /><img src='b.jpg' alt='aaa' /><img src='x.jpg' alt=xxx />";
    string altValue = "\"alt的值\""; 
    s=Regex.Replace(s,@"(?i)<img[^>]*?>",m=> Regex.IsMatch(m.Value,"\\balt=")
                                    ?Regex.Replace(m.Value,@"(?i)(?<=<img[^>]*?alt=).*?(?=\s*/>)",altValue)
                                    :Regex.Replace(m.Value,@"/?>"," alt="+altValue+" $0")
        );
        Console.WriteLine(s);
        //<img src='a.jpg' alt="alt的值" /><img src='a.jpg' title='aaa'  alt="alt的值" /><img src='b.jpg'  alt="alt的值" /><img src='b.jpg' alt="alt的值" /><img src='x.jpg' alt="alt的值" />

}

作者: q107770540   发布时间: 2011-12-16

你好 m=> 这个写法是什么意思啊,我这里不支持

作者: qiudong_5210   发布时间: 2011-12-16