Javaの正規表現とPatternとMatcherクラス

5761 ワード

正規表現 正規表現は正しい規則の表現であり、ある文法規則に合致する一連の文字列を記述または一致させるための単一の文字列であり、規則の応用である.
ルール文字java.util.regex Patternクラスの文字
  • x文字x.例:'a'は文字a
  • を表す
  • バックスラッシュ文字.
  • 新しい行(改行)記号('<0 A')
  • rリターン記号('<0 D')
  • 文字クラス
  • [abc]a、bまたはc(単純クラス)
  • [^abc]a、bまたはc(否定)
  • を除く任意の文字
  • [a-zA-Z]aからzまたはAからZ、両頭のアルファベットは
  • を含む(範囲)
  • [0-9]0-9の文字は、定義済み文字クラス
  • を含む.
  • 任意の文字は
  • を表します.
  • .d数字:[0-9]
  • w単語文字:[a-zA-Z_0-9]
  • きょうかいマッチング
  • ^行の先頭
  • $行の末尾
  • b単語境界(単語ではない場所)
  • Greedy数量詞
  • X? X、一度や一度もない例えば「」空欄は
  • ない.
  • X*X、0回または複数回が1回以上であれば複数回
  • とする.
  • X+X、1回または複数回の
  • X{n}X、ちょうどn回
  • X{n,}X,少なくともn回
  • X{n,m}X、n回以上、m回以下
  • 
    public class Mytest6 {
        public static void main(String[] args) {
            String regx = "a";//         "a"
                   regx = "[a,d,r,s,v,h]";//            
                   regx = "[a-z]";//                  
                   regx = "[0-9]";//    0-9       
                   regx = "[A-Za-z]";
                   regx = "[a-zA-Z0-9]";
                   regx = "[^0-9]";//      0-9      
                   regx = ".";//        
                   regx = "\\.";//  \\      \\.          
                   regx = "\\|";
                   regx = "\\d";//   [0-9]
                   regx = "\\w";//   [a-zA-Z0-9_]        
                   regx = "[a-z]+";//              
                   regx = "q?";//        0 ,      
                   regx = "[a-z]*";//      (>=1) 
                   regx = "[a-z]{6}";//           
                   regx = "[a-z]{6,}";//  6 
                   regx = "[a-z]{4,27}";//    4       27 
            boolean matches = "sjisdjk".matches(regx);
            System.out.println(matches);
        }
    }
    
    
    正規表現の分割機能
  • split()メソッド
  • Stringクラスの機能:public String[]split(String regex)は、文字列配列を返します.
  • 使用方法は次のコードからわかります
    import java.util.Arrays;
    
    public class Mytest7 {
        public static void main(String[] args) {
            //         :”91 27 46 38 50”,
            //    :”27 38 46 50 91”
            String str = "91 27 46 38 50";
            String[] s = str.split(" ");
            int []arr = new int[s.length];
            for (int i = 0; i < arr.length; i++) {
                arr[i] = Integer.parseInt(s[i]);
            }
            Arrays.sort(arr);
            StringBuffer sb = new StringBuffer();
            for (int i = 0; i < arr.length; i++) {
                sb.append(arr[i]).append(" ");
            }
            String s1 = sb.toString().trim();
            System.out.println(s1);
        }
    }
    
    
    正規表現の置換機能
    Stringクラスの機能:public String replaceAll(String regex,String replacement)コードを見てみましょう
    
    public class Mytest8 {
        public static void main(String[] args) {
            String str = "zhang3247893xue345342yous5543hiyigehaoren";
           //       replace()    
            String s1 = str.replaceAll("[0-9]", "");
            System.out.println(s1);
        }
    }
    
    実行結果:
    zhangxueyoushiyigehaoren
    
    正規表現の取得機能PatternとMatcherの組み合わせ使用モードでは、正規表現をカプセル化してfind()メソッドを使用して先に見つけてgroup()メソッドを使用して取得できます.
    Patternクラスの正規表現のコンパイル表現.文字列として指定された正規表現は、まずこのようなインスタンスにコンパイルする必要があります.次に、取得したパターンをMatcherオブジェクトの作成に使用し、正規表現に従って任意の文字列と一致させることができます.マッチングを実行するすべてのステータスがマッチングに存在するため、複数のマッチングは同じモードを共有することができます.Matcherクラスは、Patternがcharacter sequenceに対してマッチング動作を実行するエンジンを説明する.モードのmatcherメソッドを呼び出してモードからマッチングを作成します.マッチングを作成したら、次の3つの異なるマッチング操作を実行できます.
  • matchesメソッドは、入力シーケンス全体をモードとマッチングしようと試みる.
  • lookingAtは、入力シーケンスを最初からモードに一致させようと試みる.
  • findメソッドは、入力シーケンスをスキャンして、モードに一致する次のサブシーケンスを検索する.
  • モードとマッチングの典型的な呼び出し順序は、Pattern p=Pattern.compile(「a*b」)である.Matcher m = p.matcher(“aaaaab”); boolean b = m.matches();
    
    import java.util.regex.Matcher;
    import java.util.regex.Pattern;
    
    public class Mytest9 {
        public static void main(String[] args) {
            //                    
            String str="da jia ting wo shuo, jin tian yao xia yu, bu shang wan zi xi, gao xing bu?";
            String regx="\\b[a-z]{3}\\b";
            //     
            Pattern m = Pattern.compile(regx);
            //     
            Matcher p = m.matcher(str);
            while (p.find()){
                String s = p.group();
                System.out.println(s);
            }
    
        }
    }
    
    
    
    import java.util.Scanner;
    
    public class Mytest4 {
        public static void main(String[] args) {
            //  :  qq  .
            //1:     5 - 15    
            //2:0     
            Scanner sc = new Scanner(System.in);
            System.out.println("     qq  ");
            String s = sc.nextLine();
            boolean b = checkqqNum(s);
            if(b){
                System.out.println("    ");
            }else{
                System.out.println("         ");
            }
        }
        
        private static boolean checkqqNum(String s) {
            String regx = "[1-9][0-9]{4,14}";
            boolean matches = s.matches(regx);
            return matches;
        }
    }
    
    
    import java.util.Scanner;
    
    public class Mytest5 {
        public static void main(String[] args) {
            //    ,  11     1  
            //           
            //     3 5 6 7 8 9
            Scanner sc = new Scanner(System.in);
            System.out.println("        ");
            String s = sc.nextLine();
            boolean b = checkPhoneNum(s);
            if(b){
                System.out.println("        ");
            }else{
                System.out.println("        ");
            }
        }
    
        private static boolean checkPhoneNum(String s) {
            String regx = "[1][3,5,6,7,8,9][0-9]{9}";
            boolean matches = s.matches(regx);
            return matches;
        }
    }