想用正则表达式类实现字符串的替换功能。字符串中可能存在中括号,位置不定。要求把它当普通字符处理。

解决方案 »

  1.   

    加\如
    string str = "[[[[[]]]]()()(";
    string pstr = @"[\[\]\(\)]+";
      

  2.   

    TO:#1楼
    加了@后使\失效,个人理解:string pstr = @"[\[\]\(\)]+";的功能为:
    匹配"\[\]\(\)"这个字符串出现1次或多次的字符串。
      

  3.   

    TO:#3楼,#4楼
    举例:
    文件:[人人影视][迷失.Lost]][S04E01].rmvb
    [人人影视][迷失.Lost]][S04E02].rmvb

    [人人影视][迷失.Lost]][S04E12].rmvb用一个循环改文件名。去掉文件名中的“[人人影视]”。
    替换语句为:
    新文件名=Regex.Replace(原文件名,"[人人影视]" , "", RegexOptions.IgnoreCase);现在的结果是:新文件名=[][迷失.Lost]][S04E01].rmvb
    与想要的结果新文件名=[迷失.Lost]][S04E01].rmvb不符另外:考虑到文件名中还可包含其它字符,如:(),+,...,要把所有这些正则表达式中的功能字符(串)都考虑进去。
      

  4.   

    新文件名=Regex.Replace(原文件名, @"\[人人影视\]", "")
      

  5.   

    还有你这个功能直接可以用
    新文件名=原文件名.Replace("[人人影视]","");
      

  6.   

    TO:#7楼
    新文件名=Regex.Replace(原文件名, @"\[人人影视\]", "")
    -------------------
    "["位置不定。如果文件名换成:[迷失.Lost]][人人影视][S04E01].rmvb
    或:[迷失.Lost]][人人影视RRYS][S04E01].rmvb
    代码就失效。
      

  7.   

    TO:#8楼
    原文件名中有什么字符根本不用去考虑,只在乎于正则
    -------------
    正是想求这样与字符串无关的正则
    TO:#9楼
    参照#10楼
    之所以没有用字符串类的Replace,是因为在程序中还要用到正则
      

  8.   

    新文件名=Regex.Replace(原文件名, @"\[[^\]]*人人影视[^\]]*\]", "")
      

  9.   

    请问:字符串类的Replace可以不区分大小写吗?
      

  10.   

    TO:#12楼
    新文件名=Regex.Replace(原文件名, @"\[[^\]]*人人影视[^\]]*\]", "")
    -------------------
    如果文件名换成:[迷失.Lost](人人影视)[S04E01].rmvb,或者[迷失.Lost]+人人影视+[S04E01].rmvb呢?看来还是得分情况讨论啊,这里用字符串类的Replace,需要用正则时再用正则,多写一些代码。
    只是现在不知道字符串类的Replace如何设置不区分大小写匹配。
      

  11.   

    TO:#16楼
    "[\[\(\+][^\]\)\+]*人人影视[^\]\)\+]*[\]\)\+]"
    ------------------
    文件名为:[迷失.Lost]+人人影视[S04E01].rmvb
    失效
      

  12.   

    to:#18楼
    字符串:[迷失.Lost]+人人影视[S04E01].rmvb
    [\[\(\+]?[^\]\)\+]*人人影视[^\]\)\+]*[\]\)\+]?
    匹配的是: +人人影视[S04E01]
    所以仍然失效。