当前位置:编程学习 > C#/ASP.NET >>

正则匹配问题,请高手指点

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="">哈哈!
            */
--------------------编程问答--------------------

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="">哈哈!

--------------------编程问答-------------------- Match是只匹配一次的,后面的当然不能替换

一行代码Replace就搞定的问题,楼主居然绕了,嗯,至少是绕了五圈,结果还把自己绕进去了。。。
补充:.NET技术 ,  ASP.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,