三、括号、或匹配
在正则表达式中,由于[]号只能做单个元素的匹配,这样会限制正则表达式的作用,如何做到多个元素的匹配呢?用()实现。
()可以进行多个元素的匹配,例如:t(a|e|i|o|oo)n,|在正则表达式中代表“或”的意思,即匹配的字符串只要满足()
中任意一项元素的匹配,该正则表达式则返回true,见代码示例:
1 public class RegExp { 2 private Pattern patt; 3 private Matcher matcher; 4 /** 5 * 括号、或匹配:想要匹配“toon”,可以使用“|”操作符。“|”操作符的基本意义就是“或”运算。 6 * 要匹配“toon”,使用“t(a|e|i|o|oo)n”正则表达式。 7 * 不能使用方扩号,因为方括号只允许匹配单个字符;必须使用圆括号“()”。 8 * @param regStr 9 * @param regex 10 * @return 11 */ 12 public boolean bracketReg(String regStr,String regex){ 13 return this.commonRegExp(regStr, regex); 14 } 15 private boolean commonRegExp(String regStr,String regex){ 16 boolean wildcard_Res=false; 17 patt=Pattern.compile(regex); 18 matcher=patt.matcher(regStr); 19 wildcard_Res= matcher.find(); 20 return wildcard_Res; 21 } 22 }
1 public class TestRegExp { 2 public static void main(String[] args) { 3 RegExp re=new RegExp(); 4 boolean wildcard_Res=false; 5 //括号、或匹配 6 wildcard_Res=re.bracketReg("toon", "t(aoe|oo)n"); 7 System.out.println(wildcard_Res); 8 //输出:wildcard_Res=true 9 }
注:在用()进行匹配时,凡是在()中有多个元素连续紧挨着出现时,必须这几个元素在匹配的字符串中也连续紧挨着出现,且
不能出现多余的元素,否则匹配不会成功。见代码示例:
1 public class RegExp { 2 private Pattern patt; 3 private Matcher matcher; 4 /** 5 * 括号、或匹配:想要匹配“toon”,可以使用“|”操作符。“|”操作符的基本意义就是“或”运算。 6 * 要匹配“toon”,使用“t(a|e|i|o|oo)n”正则表达式。 7 * 不能使用方扩号,因为方括号只允许匹配单个字符;必须使用圆括号“()”。 8 * @param regStr 9 * @param regex 10 * @return 11 */ 12 public boolean bracketReg(String regStr,String regex){ 13 return this.commonRegExp(regStr, regex); 14 } 15 private boolean commonRegExp(String regStr,String regex){ 16 boolean wildcard_Res=false; 17 patt=Pattern.compile(regex); 18 matcher=patt.matcher(regStr); 19 wildcard_Res= matcher.find(); 20 return wildcard_Res; 21 } 22 } 23 24 public class TestRegExp { 25 public static void main(String[] args) { 26 RegExp re=new RegExp(); 27 boolean wildcard_Res=false; 28 //括号、或匹配 29 wildcard_Res=re.bracketReg("taoehn", "t(aoe|oo)n"); 30 System.out.println(wildcard_Res); 31 //输出:wildcard_Res=false 32 }