var str = Regex.Replace(str, @"\[img\](?<x>[^\]]*)\[/img\]", "<a href=\"$1\" target="_blank">[图片]</a>", RegexOptions.IgnoreCase);
比如上面的代码会对所有img标签进行替换,但我想要的是第1个img标签不替换,从第2个img标签进行替换。
请问如何实现?
采用的解决方法:
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); } });
你把第一个写成断言就可以了:
var str = Regex.Replace(str, @"(?<=\[img\](?<x>[^\]]*)\[/img\])\[img\](?<x>[^\]]*)\[/img\]", "<a href=\"$1\" target=_blank>[图片]</a>", RegexOptions.IgnoreCase);
或者用Regex.Matches纯天然手动拼装,练练手。