正则表达式

262 阅读2分钟
package com.cx.regex;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Test {

    public static void main(String[] args) {
        // . 匹配除"\r\n"之外的任何单个字符
       println("abc".matches("..."));
       // /d匹配一个数字
       println("dba2848f".replaceAll("\\d","-"));
       // Pattern类,Pattern表示一个字符串要被匹配的一个模式,将模式先编译好再去匹配字符串,匹配速度会更快。
        // compile()将参数正则表达式进行编译,然后放到模式中
       Pattern pattern = Pattern.compile("[a-z]{3}");// 匹配3个字符,每个字符属于a-z
//        去匹配某一个字符串,结果保存在Matcher对象中
        Matcher matcher = pattern.matcher("abdc");
      println(matcher.matches());
// * 的作用是0次或多次匹配前面最近的一个字符或子表达式,相当于{0,}
        println("zooo".matches("zo*"));  // true
        println("z".matches("zo*"));    // true
// .*搭配使用,是匹配任意数量的任意字符
        println("zook".matches("zo.*"));
        // + 一次或多次匹配前面的字符或子表达式,相当于{1,}
        println("wa".matches(".+wa.*")); // false
        println("okwa".matches(".+wa.*")); // true

        println("2790".matches("\\d+"));


        //===============范围==================
        // 1. 中括号[abc]:表示匹配中括号中的某一个字符
        // 2. [^abc]:表示匹配除了括号内字符之外的任意一个字符
        println("a".matches("[abc]"));   // true
        println("ab".matches("[abc]"));  // false:只能匹配一个
        println("a".matches("[^bcd]")); // true
        println("b".matches("[^bcd]")); // false
        println("bc".matches("[^bcd]")); // false 中括号只匹配一个字符

        // [a-z]表示匹配26个小写英文字母中的一个.[A-Z]表示匹配26个大写英文字母中的一个
        println("a".matches("[a-z]")); // true
        // [a-zA-Z] <=> [a-z][A-Z],表示匹配[a-z]或[A-Z]中的一个字符
        println("a".matches("[a-zA-Z]")); // true
        // 表示匹配a-z并且是OK其中之一的一个字符
        println("K ".matches("[a-z]&&[OK]]")); // true

//        =============\ \ \ \ \
// \d : 匹配一位数字,大写于小写作用相反
//  \D : 匹配除了0-9之外的任意字符
//        \s : 匹配任何空白字符 : \t,\n,\x0B,\f,\r, 大写S与小写作用相反
//      \w  匹配任何字类字符,包括下划线。与"[A-Za-z0-9_]"等效,W与w作用相反
        println("dd".matches("\\D")); // false 匹配一位
        println("a".matches("\\D"));
        println(" ".matches("\\s")); // true
        println(" \t\n\r".matches("\\s{4}")); // true
        println("wye6_dn".matches("\\w+"));  // true
        println("abc666#$\\".matches("[a-z]{1,5}\\d+[#$%&^]+\\\\")); // true

//       ^ :定义了输入字符串开始的位置,以空白字符开始但不能以换行符开始,以\n结尾
        println(" \f\t\r\n".matches("^[\\s&&[^\\n]]*\\n")); // true

//        ==============匹配email===============================
        String patternEmail = "[\\w[.-]]+@[\\w+[._]]+\\.[\\w]+";

//  =====================示例========================================
        Pattern pattern1 = Pattern.compile("\\d{3,5}");
        String str1 = "123-456-789";
        Matcher matcher1 = pattern1.matcher(str1);
        // find() 方法的作用是找一个子串能够匹配pattern,找到返回true,
        matcher1.find();


    }

    private static void println(Object obj){
        System.out.println(obj);
    }
}