美文网首页
Java正则表达式基本用法

Java正则表达式基本用法

作者: m2fox | 来源:发表于2017-12-17 14:51 被阅读0次

    两个关键类

    • Pattern:正则表达式编译后在内存中的表示形式。是不可变类,可供多个线程并发使用;
    • Matcher:保存执行匹配所涉及的各种状态,多个Matcher对象可以共享一个Pattern对象。

    简单用法程序示例

    System.out.println(Pattern.matches("a\\wb", "a_b")); // 输出:true
    Pattern p = Pattern.compile("a*b");
    Matcher m = p.matcher("aabzaaadaaafbc");
    System.out.println(m.matches()); // 输出:false
    

    Matcher类的常用方法

    程序举例

    public static void test1() {
            System.out.println(Pattern.matches("a\\wb", "a_b")); // 输出:true
    
            Pattern p = Pattern.compile("a*b");
            Matcher m = p.matcher("aabzaaadaaafbc");
    
            System.out.println(m.matches()); // 输出:false
            System.out.println(m.find()); // 输出:true
            System.out.println(m.group()); // 输出:b
            System.out.println(m.start()); // 输出:2
            System.out.println(m.end()); // 输出:3
            System.out.println(m.lookingAt()); // 输出:true
            m.reset("zab");
            System.out.println(m.lookingAt()); // 输出:false
        }
    
        public static void test2() {
            Matcher m = Pattern.compile("\\w+").matcher("Java is very easy!");
    
            while (m.find()) {
                System.out.println(m.group() + "子串的起始位置:" + m.start() + ",结束位置:"
                        + m.end());
            }
    
            int i = 0;
            while (m.find(i)) {
                System.out.print(m.group() + "\t");
                i++;
            }
    
            // 输出:
            // Java子串的起始位置:0,结束位置:4
            // is子串的起始位置:5,结束位置:7
            // very子串的起始位置:8,结束位置:12
            // easy子串的起始位置:13,结束位置:17
            // Java ava va a is is s very very ery ry y easy easy asy sy y
        }
    
        public static void test3() {
            String[] mails = { "Jiayongji@163.com", "Jiayongji@gmail.com",
                    "jy@hust.org", "wawa@abc.cc" };
            String mailRegEx = "\\w{3,20}@\\w+\\.(com|cn|edu|org|net|gov)";
            Pattern mailPattern = Pattern.compile(mailRegEx);
    
            Matcher mailMatcher = null;
    
            for (String mail : mails) {
                if (mailMatcher == null) {
                    mailMatcher = mailPattern.matcher(mail);
                } else {
                    mailMatcher.reset(mail);
                }
    
                System.out.println(mail + (mailMatcher.matches() ? "是" : "不是")
                        + "一个合法的邮箱地址");
            }
    
            // 输出:
            // Jiayongji@163.com是一个合法的邮箱地址
            // Jiayongji@gmail.com是一个合法的邮箱地址
            // jy@hust.org不是一个合法的邮箱地址
            // wawa@abc.cc不是一个合法的邮箱地址
    
        }
    
        public static void test4() {
            Matcher m = Pattern.compile("\\bre\\w*").matcher(
                    "Java is real good at inrestart and regex.");
            System.out.println(m.replaceAll("哈哈"));
    
            // 输出:
            // Java is 哈哈 good at inrestart and 哈哈.
    
        }
    

    相关文章

      网友评论

          本文标题:Java正则表达式基本用法

          本文链接:https://www.haomeiwen.com/subject/ragywxtx.html