首页 新闻 会员 周边

C#正则表达式中如何从第2个匹配才开始替换

0
悬赏园豆:30 [已解决问题] 解决于 2014-09-28 18:52
var str = Regex.Replace(str, 
                        @"\[img\](?<x>[^\]]*)\[/img\]", 
                        "<a href=\"$1\" target="_blank">[图片]</a>", 
                        RegexOptions.IgnoreCase);

比如上面的代码会对所有img标签进行替换,但我想要的是第1个img标签不替换,从第2个img标签进行替换。

请问如何实现?

dudu的主页 dudu | 高人七级 | 园豆:30994
提问于:2014-09-28 16:59
< >
分享
最佳答案
0

采用的解决方法:

bool isFirst = true;
REGEX_MOBILE_THUMBNAIL.Replace(input,
                delegate(Match match)
                {
                    if (isFirst)
                    {
                        isFirst = false;
                        return string.Format("<a href=\"{0}\"><img src=\"{0}\" width=\"320\" alt=\"[图片]\"/></a>", 
                            match.Groups[1].Value);
                    }
                    else
                    {
                        return string.Format("<a href=\"{0}\">[图片]</a>", match.Groups[1].Value);
                    }
                });
dudu | 高人七级 |园豆:30994 | 2014-09-28 18:51
其他回答(1)
0

你把第一个写成断言就可以了:

var str = Regex.Replace(str,
    @"(?<=\[img\](?<x>[^\]]*)\[/img\])\[img\](?<x>[^\]]*)\[/img\]",
    "<a href=\"$1\" target=_blank>[图片]</a>",
    RegexOptions.IgnoreCase);

或者用Regex.Matches纯天然手动拼装,练练手。

收获园豆:30
Indream Luo | 园豆:315 (菜鸟二级) | 2014-09-28 17:46
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册