请教一下高手,我想替换一个字符串中的字符ab,但是不替换[ab]的内容,就是有中括号括起来的不替换,用C#的正规表达式该怎么写呀?如:“吸烟有害健康,请不要[吸烟]”,现在把字符“吸烟”替换为“抽烟”,替换后的结果是“抽烟有害健康,请不要[吸烟]”,C#正规怎么写,谢谢!

解决方案 »

  1.   

    .replace("ab","XX").replace("[XX]","[ab]")
      

  2.   


    private void button1_Click(object sender, EventArgs e)
    {
        string yourStr = "吸烟有害健康,请不要[吸烟]”,";
        string result = Regex.Replace(yourStr, @"(?!\[)吸烟(?!\])", "抽烟");
        MessageBox.Show(result);
    }
      

  3.   

    你是全角符号。不用转义都可以了。private void button1_Click(object sender, EventArgs e)
    {
        string yourStr = "吸烟有害健康,请不要[吸烟]”,";
        string result = Regex.Replace(yourStr, @"(?![)吸烟(?!])", "抽烟");
        MessageBox.Show(result);
    }
      

  4.   

    哇好快!string str = "吸烟有害健康,请不要[吸烟]";
    Regex r = new Regex(@"(?!\[|【)吸烟(?!\]|】)");//解决全角半角
    Response.Write(r.Replace(str, ""));
      

  5.   


    string str = "吸烟有害健康,请不要[吸烟]";
    Regex r = new Regex(@"(?!\[|【)吸烟(?!\]|】)");//解决全角半角
    Response.Write(r.Replace(str, "抽烟"));
      

  6.   

    谢谢wuyazhe,如果把“吸烟”用变量A代替,“抽烟”用变量B代替,您的以下程序该怎么改写?
      

  7.   


    private void testRegex05()
    {
        string A = "吸烟";
        string B = "抽烟";
        string yourStr = "吸烟有害健康,请不要[吸烟]”,";
        string result = Regex.Replace(yourStr, @"(?![)" + A + "(?!])", B);
        MessageBox.Show(result);
    }
      

  8.   


    //我的
    string a = "吸烟";
    string b = "抽烟";
    string str = "吸烟有害健康,请不要[吸烟]";
    Regex r = new Regex(@"(?!\[|【)"+a+@"(?!\]|】)");
    Response.Write(r.Replace(str, b));//wuyazhe的
    string a = "吸烟";
    string b = "抽烟";
    string yourStr = "吸烟有害健康,请不要[吸烟]”,";
    string result = Regex.Replace(yourStr, @"(?![)"+a+@"(?!])",b);
    MessageBox.Show(result);
      

  9.   

                string s = "吸烟有害健康,请不要[吸烟]";
                string r = Regex.Replace(s, @"(?!\[)吸烟(?!\])", "抽烟");
      

  10.   

    感谢mmm306306(马老虎)的耐心指教,分数已经派出,非常感谢!!