import java.util.regex.Pattern;
public class CopyOfSalutonPublic 
{
    public void fuction(String test) 
    {
        Pattern pt = Pattern.compile(":\\/{2}|@");
        String[] strArray = pt.split(test);
        // 如果假定test格式合法,数组不会越界
        String protocol = strArray[0];
        String domainName = strArray[1];
        String username = strArray[2];        System.out.println("test [" + test + "]");
        System.out.println("protocol [" + protocol + "]");
        System.out.println("username [" + username + "]");
        System.out.println("domainName [" + domainName + "]");
    }    public static void main(String[] args) 
    {
        String test = "http://[email protected]";
        CopyOfSalutonPublic publicObj = new CopyOfSalutonPublic();
        publicObj.fuction(test);
    }
}
这个式子中的        Pattern pt = Pattern.compile(":\\/{2}|@");
是public static Pattern compile(String regex)将给定的正则表达式编译到模式中。 我都能理解 但是(":\\/{2}|@");里的:\\我知道是什么 后面的/{2}|@ 是什么意思我就不知道了 @也知道什么 但是组合在一起(":\\/{2}|@");各种符号都代表是什么意思,我在书上没有找到,我知道这个总的意思是将:\\,@的字符串给分开,如同Split()一样,但是这俩的区别是什么,如果用Split()写这个程序怎么写,
注:要求用String类的方法实现,不得采用正则表达式(不是这题的)   这句话是什么意思

解决方案 »

  1.   

    不知道是楼主的表达有问题?还是我的理解能力有问题?1.首先说一下你这个正则表达式 ":\\/{2}|@"
     (1)冒号:表示冒号本身,没有什么特殊意义。
     (2)\\用来转义/这个字符的(这里有两个\,是Java 代码编译成为 \ )
     (3){2}表示前面的字符需要出现两次,不能多也不能少哦。这里就表示/需要出现两次
     (4)|是一个多选结构的元字符。可以理解成前面的/{2}与后面的@符号是或的关系。
     (5)@符号表示其本身,没有什么特俗含义。2.说说你的“要求用String类的方法实现,不得采用正则表达式(不是这题的)  这句话是什么意思” 是要考中文的理解能力吗? 就是不用正则表达式来处理,直接用String类的基本方法,通过顺序、分支、循环编程来实现同样的功能。