求一个正则表达式:匹配包含任意字母、数字、加减乘除、下划线的字符串,但不包含纯数字 或 由数字和减号组成的字符串

解决方案 »

  1.   

    例如
    应该能匹配a=b*3/2、mm、a3b
    但不能匹配2、35、1-3-7等
      

  2.   

    我已经给你正则了string[] strs = { "a=b*3/2", "mm", "a3b", "2", "35", "1-3-7" };
            Regex reg = new Regex(@"(?i)^(?![\d\-]+$)[a-z\d\-+*/_]+$");
            foreach (string s in strs)
            {
                Console.WriteLine("test {0} is {1}", s, reg.IsMatch(s));
            }
      

  3.   


            string str = @"如何得到光标标在中位置,我们(1-2-0)移动光标位置时在(1-1-8'‘’')的任务栏,我们可(2)以看到,第()3几行,第几列,那么这个值能a=b*3/2程序的方法取得吗?";
            MatchCollection mc = Regex.Matches(str, @"(?i)[a-z\d\-+*/_]+(?<![^a-z\d\-+*/_][\d\-]+)");
            foreach (Match m in mc)
            {
                Console.WriteLine(m);
            }
    /*
    a
    b*3/2
    */
      

  4.   


    谢谢!我想跟您学习点东西,请问
    (?i)的意思是什么?
    ?<!的意思是什么?
      

  5.   

    (?i) 忽略大小写
    (?<!exp)匹配前边不是exp的位置
    http://download.csdn.net/source/2844387
      

  6.   

    ...(?i)(?<![a-z\d\-+*/_])(?![\d-]+(?![a-z\d\-+*/_]))[a-z\d\-+*/_]+
      

  7.   

    @"(?i)[a-z\d\-+*/_]+(?<![^a-z\d\-+*/_][\d\-]+)"
    =>
    @"(?i)[a-z\d\-+*/_]+(?<!(?:^|[^a-z\d\-+*/_])[\d\-]+)"
      

  8.   

    或是cj205的修改为
    (?i)[a-z\d\-+*/_]+(?<!(?<![a-z\d\-+*/_])[\d\-]+)
      

  9.   

    内联模式
    http://msdn.microsoft.com/zh-cn/library/ae5bf541%28VS.80%29.aspx