zoukankan      html  css  js  c++  java
  • java正则表达式(三)

    三、括号、或匹配

    在正则表达式中,由于[]号只能做单个元素的匹配,这样会限制正则表达式的作用,如何做到多个元素的匹配呢?用()实现。

    ()可以进行多个元素的匹配,例如: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   }
  • 相关阅读:
    BZOJ 1391: [Ceoi2008]order
    BZOJ 4504: K个串
    2019 年百度之星·程序设计大赛
    POJ 2398 Toy Storage (二分 叉积)
    POJ 2318 TOYS (二分 叉积)
    HDU 6697 Closest Pair of Segments (计算几何 暴力)
    HDU 6695 Welcome Party (贪心)
    HDU 6693 Valentine's Day (概率)
    HDU 6590 Code (判断凸包相交)
    POJ 3805 Separate Points (判断凸包相交)
  • 原文地址:https://www.cnblogs.com/loritin/p/2723238.html
Copyright © 2011-2022 走看看