问题描述
importjava.util.regex.Pattern;publicclassCopyOfSalutonPublic{publicvoidfuction(Stringtest){Patternpt=Pattern.compile(":\/{2}|@");String[]strArray=pt.split(test);//如果假定test格式合法,数组不会越界Stringprotocol=strArray[0];StringdomainName=strArray[1];Stringusername=strArray[2];System.out.println("test["+test+"]");System.out.println("protocol["+protocol+"]");System.out.println("username["+username+"]");System.out.println("domainName["+domainName+"]");}publicstaticvoidmain(String[]args){Stringtest="http://jia@126.com";CopyOfSalutonPublicpublicObj=newCopyOfSalutonPublic();publicObj.fuction(test);}}这个式子中的Patternpt=Pattern.compile(":\/{2}|@");是publicstaticPatterncompile(Stringregex)将给定的正则表达式编译到模式中。我都能理解但是(":\/{2}|@");里的:\我知道是什么后面的/{2}|@是什么意思我就不知道了@也知道什么但是组合在一起(":\/{2}|@");各种符号都代表是什么意思,我在书上没有找到,我知道这个总的意思是将:\,@的字符串给分开,如同Split()一样,但是这俩的区别是什么,如果用Split()写这个程序怎么写,注:要求用String类的方法实现,不得采用正则表达式(不是这题的)这句话是什么意思
解决方案
解决方案二:
引用楼主yizhenchen84的帖子:
…这个式子中的Patternpt=Pattern.compile(":\/{2}|@");是publicstaticPatterncompile(Stringregex)将给定的正则表达式编译到模式中。我都能理解但是(":\/{2}|@");里的:\我知道是什么后面的/{2}|@是什么意思我就不知道了@也知道什么但是组合在一起(":\/{2}|@");各种符号都代表是什么意思,我在书上没有找到,我知道这个总的意思是将:\,@的字符串给分开,如同Split()一样,但是这俩的区别是什么,如果用Split()写这个程序怎么写,注:要求用String类的方法实现,不得采用正则表达式(不是这题的)这句话是什么意思…
不知道是楼主的表达有问题?还是我的理解能力有问题?1.首先说一下你这个正则表达式":\/{2}|@"(1)冒号:表示冒号本身,没有什么特殊意义。(2)\用来转义/这个字符的(这里有两个,是Java代码编译成为)(3){2}表示前面的字符需要出现两次,不能多也不能少哦。这里就表示/需要出现两次(4)|是一个多选结构的元字符。可以理解成前面的/{2}与后面的@符号是或的关系。(5)@符号表示其本身,没有什么特俗含义。2.说说你的“要求用String类的方法实现,不得采用正则表达式(不是这题的)这句话是什么意思”是要考中文的理解能力吗?就是不用正则表达式来处理,直接用String类的基本方法,通过顺序、分支、循环编程来实现同样的功能。