public static void main(String[] args)
    {        String str = "http://localhost:8080/sshframework/param/queryParamData.action?vpar=2012-8-17-10-26-16-0.40798535273884656&status=&pageNo=1&dtsNo=&versionNo=&pageSize=10&dateEnd=&dateBegin=&applyPerson=&paramType=&";
        String str1 = "http://localhost:8080/sshframework/param/queryParamData.action?";
        String reg = "/(\\w+)(/\\w+)(\\.action)(\\?vpar)";
        Pattern p = Pattern.compile(reg);
        Matcher mt = p.matcher(str);
        Matcher m = p.matcher(str1);
        String nameSpace = "";
        if (mt.find())
        {
            nameSpace = mt.group(1);
        }
        System.out.println(nameSpace);
        
        if (m.find())
        {
            System.out.println(m.group(1));    
        }
        
    }上面是 我改进的一个正则表达式,但是达不到要求、 我需求是:
 当有.action?vpar的时候 不取param这个字符串,并且返回为空字符串。
当只有.action的时候取param 。 并且返回这个字符串。

解决方案 »

  1.   


    public static void main(String[] args) { String str = "http://localhost:8080/sshframework/param/queryParamData.action?vpar=2012-8-17-10-26-16-0.40798535273884656&status=&pageNo=1&dtsNo=&versionNo=&pageSize=10&dateEnd=&dateBegin=&applyPerson=&paramType=&";
    String str1 = "http://localhost:8080/sshframework/param/queryParamData.action?";
    String reg = "/(\\w+)(/\\w+)(\\.action\\?)$";
    Pattern p = Pattern.compile(reg);
    Matcher mt = p.matcher(str);
    Matcher m = p.matcher(str1);
    String nameSpace = "";
    if (mt.find()) {
    nameSpace = mt.group(1);
    }
    System.out.println(nameSpace); if (m.find()) {
    System.out.println(m.group(1));
    } }
    这个意思?
      

  2.   


    大概是这个。 但是
    String str1 = "http://localhost:8080/sshframework/param/queryParamData.action?";
    上面的字符串如果末尾没有?(问号)  那得出的数据就不对了? 最好在?vpar= 来判断。 因为这是一个标识, 有些链接没有这个标识但也要取出param(这个字符串)。
      

  3.   

    在这加个 if (!mt.find()){},可以吗