正则匹配问题,请高手指点
string message = "测试表情匹配[em:10][em:9]哈哈!";string pattern = "\\[em:([0-9]*)\\]";
Regex re = new Regex(pattern, RegexOptions.IgnoreCase);
Match mc = re.Match(message);
if (mc.Success)
{
if (mc.Groups.Count > 0)
{
for (int k = 0; k < mc.Groups.Count; k++)
{
string faceId = mc.Groups[k + 1].Value;
if (string.IsNullOrEmpty(faceId))
continue;
message = message.Replace("[em:" + faceId + "]", "<img src=\"http://image.xxxx.com/Chat/face/" + faceId + ".gif\" alt=\"\">");
}
}
}
Response.Write(message);
这段代码为什么只能替换掉[em:10]而替换不了[em:9]呢,请高手指点一下。 --------------------编程问答-------------------- 正则没有问题
代码问题 --------------------编程问答--------------------
string str = @"测试表情匹配[em:10][em:9]哈哈!";--------------------编程问答--------------------
Regex reg = new Regex(@"\[em:(\d+)\]");
str=reg.Replace(str, "<img src=\"http://image.xxxx.com/Chat/face/$1.gif\" alt=\"\">");
Console.WriteLine(str);
/*
测试表情匹配<img src="http://image.xxxx.com/Chat/face/10.gif" alt=""><img src="h
ttp://image.xxxx.com/Chat/face/9.gif" alt="">哈哈!
*/
--------------------编程问答-------------------- Match是只匹配一次的,后面的当然不能替换
string message = "测试表情匹配[em:10][em:9]哈哈!";
string pattern = "\\[em:([0-9]*)\\]";
Regex re = new Regex(pattern, RegexOptions.IgnoreCase);
foreach(Match mc in re.Matches(message))
{
if (mc.Success)
{
for (int k = 0; k < mc.Groups.Count; k++)
{
string faceId = mc.Groups[k + 1].Value;
if (string.IsNullOrEmpty(faceId))
continue;
message = message.Replace("[em:" + faceId + "]", "<img src=\"http://image.xxxx.com/Chat/face/" + faceId + ".gif\" alt=\"\">");
}
}
}
//测试表情匹配<img src="http://image.xxxx.com/Chat/face/10.gif" alt=""><img src="http://image.xxxx.com/Chat/face/9.gif" alt="">哈哈!
一行代码Replace就搞定的问题,楼主居然绕了,嗯,至少是绕了五圈,结果还把自己绕进去了。。。
补充:.NET技术 , ASP.NET