在一段很长的字符串中,存在很多如下特征的子串:中国......伟大的祖国。
即:首先是“中国”,然后是任意多个字符,然后是“伟大的祖国”。
我为了捕获这些子串,于是写了如下的正则表达式:@"(中国.*?伟大的祖国)",
现在的问题是:如果在“中国”和“伟大的祖国”之间存在“日本”两个字,我就不要捕获这个子串!
请问如何改写这个正则表达式?
像这种问题,一个正则表达式能搞定吗?
(C#)

解决方案 »

  1.   

      private static void Main(string[] args)
            {
                Regex reg = new Regex(@"(中国(?!.*日本).*伟大的祖国)");
                string target = "中国,我伟大的祖国";
                Console.WriteLine(reg.IsMatch(target));
                Console.WriteLine(reg.Match(target).Value);
                target = "中国我操日本人,我伟大的祖国";
                Console.WriteLine(reg.IsMatch(target));
                Console.ReadLine();
            }