String s = "(([1-9][0-9]?)|(1[0-9]{2})|(2[0-4][0-9]|25[0-5]))\.";编辑器(NetBeans)出现红色提示,无法保存。

解决方案 »

  1.   

    String   s   =   "(([1-9][0-9]?)|(1[0-9]{2})|(2[0-4][0-9]|25[0-5]))\\.";这样的吧.....
    2个问题,一个是你那个符号"|"是英文字符,在中文字符下不能保存,还有就是"\",需要变成"\\".("."不需要用"\")
      

  2.   

    大家在程序中如何使用正则表达式的.(如何将书写好的正则表达式,保存到变量中然后再通过Pattern.compile(str);进行编译..
    并且不会改变它的原意.上述的方法我试过了,虽然可以达到保存到字符串对象中去.但是原因好像被改变了..再进行区配时就无法匹配了.请高手点拔.谢谢..
      

  3.   

    请看源码?这是一个检测输入的IP是否全法的"正则表达式".public class RegExTest
    {
        public static void main (String[] args)
        {
            Scanner in = new Scanner (System.in);
            //System.out.println("Enter pattern:");//以前是通过手动输入表达式的,这里用不着所以先关闭.
            //String patternString = in.nextLine();
          
            String strIP1 = "(([1-9][0-9]?)|(1[0-9]{2})|(2[0-4][0-9]|25[0-5]))\\. "; 
            String strIP2 = "(0|([1-9][0-9]?)|(1[0-9]{2})|(2[0-4][0-9]|25[0-5]))\\.";
            String strIP3 = "(0|([1-9][0-9]?)|(1[0-9]{2})|(2[0-4][0-9]|25[0-5]))\\.";
            String strIP4 = "(0|([1-9][0-9]?)|(1[0-9]{2})|(2[0-4][0-9]|25[0-5]))";
            System.out.println(strIP1);
            Pattern pattern = null;
            try
            {
                pattern = Pattern.compile(strIP1);
            }
            catch (PatternSyntaxException e)
            {
                System.out.println("Pattern syntax error");
                System.exit(1);
            }
            
            while (true)
            {
                System.out.println("Enter string to match:");
                String input = in.nextLine();
                
                if (input == null || input.equals("")) return;
                
                Matcher matcher = pattern.matcher(input);
                if (matcher.matches())
                {
                    System.out.println("Match");
                    int g = matcher.groupCount();
                    if (g>0)
                    {
                        for (int i=0; i<input.length(); i++)
                        {
                            for (int j=1; j<=g; j++)
                                if(i==matcher.start(j))
                                    System.out.print('(');
                            
                            System.out.print(input.charAt(i));
                            
                            for(int j=1; j<=g; j++)
                                if(i+1 == matcher.end(j))
                                    System.out.print(')');
                        }
                        System.out.println();
                    }
                }
                else
                    System.out.println("No match");
            }
        }
       
    }
    //以上通过变量保存"正则表达式"的方法后,就无法正常匹配了,采用手工输入上述“正则表达式”是没有问题的。请大家检测。再请大家给出方法谢谢。。
      

  4.   

    pattern = Pattern.compile(strIP1);
    只测试IP地址,第一段(先看能不能通过)。。输入10. 110. 192.手工方式都通过,通过保存变量后就无法匹配了。
      

  5.   

    郁闷。代码都打上去了。就没个人指点。大家都不用正则表达式。极度郁闷。。java人气不如c++人气啊