或多次,因此moon,mon,mooon能匹配成功,而mono在n后多了一个o,和模式匹配不上.
注:
+表示一次或多次;?表示0次或一次;*表示0次或多次.
实例三:
String[]dataArr={"ban","ben","bin","bon","bun","byn","baen"};
for(Stringstr:dataArr){
StringpatternStr="b[aeiou]n";
booleanresult=Pattern.matches(patternStr,str);
if(result){
System.out.println("字符串"+str+"匹配模式"+patternStr+"成功");
}
else{
System.out.println("字符串"+str+"匹配模式"+patternStr+"失败");
}
}
注:方括号中只允许的单个字符,模式“b[aeiou]n”指定,只有以b开头,n结尾,中间是a,e,i,o,u中任意一个的才能匹配上,所以数组的前五个可以匹配,后两个元素无法匹配.
方括号[]表示只有其中指定的字符才能匹配.
实例四:
String[]dataArr={"been","bean","boon","buin","bynn"};
for(Stringstr:dataArr){
StringpatternStr="b(ee|ea|oo)n";
booleanresult=Pattern.matches(patternStr,str);
if(result){
System.out.println("字符串"+str+"匹配模式"+patternStr+"成功");
}
else{
System.out.println("字符串"+str+"匹配模式"+patternStr+"失败");
}
}
如果需要匹配多个字符,那么[]就不能用上了,这里我们可以用()加上|来代替,()表示一组,|表示或的关系,模式b(ee|ea|oo)n就能匹配been,bean,boon等.
因此前三个能匹配上,而后两个不能.
实例五:
String[]dataArr={"1","10","101","1010","100+"};
for(Stringstr:dataArr){
StringpatternStr="\d+";
booleanresult=Pattern.matches(patternStr,str);
if(result){
System.out.println("字符串"+str+"匹配模式"+patternStr+"成功");
}
else{
System.out.println("字符串"+str+"匹配模式"+patternStr+"失败");
}
}
注:从前面可以知道,\d表示的是数字,而+表示一次或多次,所以模式\d+就表示一位或多位数字.
因此前四个能匹配上,最后一个因为+号是非数字字符而匹配不上.
实例六:
String[]dataArr={"a100","b20","c30","df10000","gh0t"};
for(Stringstr:dataArr){
StringpatternStr="\w+\d+";
booleanresult=Pattern.matches(patternStr,str);
if(result){
System.out.println("字符串"+str+"匹配模式"+patternStr+"成功");
}
else{
System.out.println("字符串"+str+"匹配模式"+patternStr+"失败");
}
}
模式\w+\d+表示的是以多个单字字符开头,多个数字结尾的字符串,因此前四个能匹配上,最后一个因为数字后还含有单字字符而不能匹配.
实例七:
Stringstr="薪水,职位;年龄性别";
String[]dataArr=str.split("[,\s;]");
for(StringstrTmp:dataArr){
System.out.println(strTmp);
}
String类的split函数支持正则表达式,上例中模式能匹配”,”,单个空格,”;”中的一个,split函数能把它们中任意一个当作分隔符,将一个字符串劈分成字符串数组.
实例八:
Stringstr="2007年12月11日";
Patternp=Pattern.compile("[年月日]");
String[]dataArr=p.split(str);
for(StringstrTmp:dataArr){
System.out.println(strTmp);
}
Pattern是一个正则表达式经编译后的表现模式,它的split方法能有效劈分字符串.
注意其和String.split()使用上的不同.
实例九:
Stringstr="10元1000人民币10000元100000RMB";
str=str.replaceAll("(\d+)(元|人民币|RMB)","¥"