新开一贴,继续求解!正则匹配的问题!!!!!!!!!!!!!!!!!!!
时间: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
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
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28