(\w)\1{4,} 与 (\w){4,}\1 的区别是什么?
例如我匹配aa bbbb abcdefg ccccc 111121111 999999999
当用第一个表达式的时候的结果是: ccccc 999999999
当用第二个表达式的时候结果是:ccccc 111121111  999999999
真的不怎么明白,请教大家能否解析下?

解决方案 »

  1.   

    唉。。终于想通了应该是这样的。
    第一条表达式可以写成这样:(\w)(\w){4,}
    第二条表达式则写成这样(\w){4,}(\w)
    当然,条件就是在第一个(\w)匹配结束后第二个(\w)必须跟第一个(\w)所匹配的内容一样
      

  2.   

    其实我在CSDN上经常问正则表达式,每次都是你回答我呵呵。。你好厉害。我现在正在学正则表达式呢
      

  3.   


    5楼正解可以用这段代码去试using System;
    using System.Text;
    using System.Text.RegularExpressions;public class Program
    {
        //public const string EmailRegularExpression = @"(^\<(\s)*.+([-+.].+)*@.+([-.].+)*(\s)*\>\z)|"
        //           + @"(^(\s)*.+(.|\s)+\<(\s)*.+([-+.].+)*@.+([-.].+)*(\s)*\>\z)|"
        //           + @"(^\w+([-+.]\w+)*@\w+([-.]\w+)*$)";
        public const string EmailRegularExpression = @"^(\w){4,}\1";
        public static void Main()
        {
            string testString = string.Empty;
            while (true)
            {
                testString = Console.ReadLine();
                if (testString != null && testString.Equals("exit"))
                {
                    break;
                }
                if (!Regex.IsMatch(testString, EmailRegularExpression))
                {
                    Console.WriteLine("Wrong...");
                }
                else
                {
                    Console.WriteLine("Right...");
                }
            }
        }
    }