public static string regexFilesName(string inputStr)
        {
            Regex re = new Regex("^.{12,12}[0-9]{14,14}[^(.cfg|.dat).]*(.cfg|.dat)+$");
            if (re.IsMatch(inputStr))
                return inputStr;
            return null;
        }
公司前人写的一个函数,没明白这个什么意思,看半天没搞懂,第一次接触正则这东西
大家看看这个要返回的是什么,他想表达什么意思,他注释写的是// 得到文件名的命名规则

解决方案 »

  1.   

    "^.{12,12}[0-9]{14,14}[^(.cfg|.dat).]*(.cfg|.dat)+$"^匹配开头
    $匹配结尾
    .{12,12}  12个不是换行符的字符
    [0-9]{14,14}  14个数字
    [^(.cfg|.dat).]*  不是.cfg或者.dat的任意字符
    (.cfg|.dat)+ 结尾时.cfg或者.dat比如匹配
    abcdefghabws12345678910212uoi45wer.cfg不过个人觉得
    [^(.cfg|.dat).]*(.cfg|.dat)+
    这个写的不怎么好(.cfg|.dat)+既然能出现一次以上,那前面的限制就没必要了
      

  2.   

    "^.{12,12}[0-9]{14,14}[^(.cfg|.dat).]*(.cfg|.dat)+$"
    我觉的他的意思是匹配这样一条字符串
    12个任意字符加上14个数字再加上不是“.cfg”或“.dat”的任意个字符再加上至少一个“.cfg”或“.dat”这个正则写的有问题
    首先 14个数字这样写即可[0-9]{14} 还有就是[^]集合在这里不合适这个正则应该这样写比较合适些
    @"(?isn)^.{12}[0-9]{14}((?!(\.cfg|\.dat)).)*(\.cfg|\.dat)+$"
      

  3.   

    [^(.cfg|.dat).] 这个的意思是除了 ( . c f g | d a t ) 这几个字符之外的任意字符
    [^] 表示的是集合中的字符串集合的补集上面的修正一下
    @"(?isn)^.{12}[0-9]{14}((?!(\.cfg|\.dat)\.).)*(\.cfg|\.dat)+$"
      

  4.   

    Regex re = new Regex("^.{12,12}[0-9]{14,14}[^(.cfg|.dat).]*(.cfg|.dat)+$");{12,12}和{12}是一个效果
    [^(.cfg|.dat).]* 假如要匹配不是.cfg或.dat的内容的话  还不如用(?:(?!\.cfg|\.bat).)*