zoukankan      html  css  js  c++  java
  • groovy : 正則表達式

    groovy 正則表達式 企图模仿Perl 的语法,结果是我试用后。发现没法提取匹配的字符串。

    还是直接引用 java.util.regex  负责对字符序列进行正則表達式匹配

    先转载水木清华上的样例 RegexTest.java

    import java.util.regex.*; 
    
    /** 
    *  java.util.regex  负责对字符序列进行正則表達式匹配 
    *  Pattern负责编译 
    *  Matcher负责匹配 
    *	字符串: (010)abcdefg{beijing}opjhhkk
    *	正则模式: /((d+)).*{([a-zA-Z]+)}/  
    */
    public class RegexTest { 
       public static void main(String [] args) { 
         Pattern p = Pattern.compile("\((\d+)\).*\{([a-zA-Z]+)\}"); 
         Matcher m = p.matcher("(010)abcdefg{beijing}opjhhkk "); 
         if (m.find()) { 
             System.out.println(m.group(0)); // (010)abcdefg{beijing}opjhhkk  
             System.out.println(m.group(1)); // 010 
             System.out.println(m.group(2)); // beijing 
         } 
       } 
     }
    
    执行 java RegexTest

    下面原创:
    我想从一行字符串中提取身份证号码 regexTest.groovy

    import java.util.regex.*; 
    
    /** 
    *   字符串: 1234567890123456789 ID:44010119800101246X abcdefg
    *   正则式1: /ID.+(d{17}[0-9Xx])/ 
    *   正则式2: /(d{18}).*ID.+(d{17}[0-9Xx])/
    */
    public class RegexTest { 
       public static void main(String [] args) { 
         Pattern p = Pattern.compile("ID.+(\d{17}[0-9Xx])"); 
         Matcher m = p.matcher(" 1234567890123456789 ID:44010119800101246X abcdefg "); 
         if (m.find()) { 
          int g = m.groupCount();
          println("groups: "+g);
          for(int i=0; i<=g; i++){
             println(i+": "+m.group(i));
          }
         } 
       } 
     }
    

    执行 groovy regexTest


  • 相关阅读:
    POJ 1141 括号匹配 DP
    881. Boats to Save People
    870. Advantage Shuffle
    874. Walking Robot Simulation
    文件操作
    861. Score After Flipping Matrix
    860. Lemonade Change
    842. Split Array into Fibonacci Sequence
    765. Couples Holding Hands
    763. Partition Labels
  • 原文地址:https://www.cnblogs.com/zfyouxi/p/5103862.html
Copyright © 2011-2022 走看看