zoukankan      html  css  js  c++  java
  • $Java正则表达式基础整理

    (一)正则表达式及语法简介

    1. String类使用正则表达式的几个方法:
    2. 正则表达式支持的合法字符:
    3. 特殊字符:
    4. 预定义字符:
    5. 方括号表达式:
    6. 圆括号表达式:用于将多个表达式组成一个子表达式,可以使用或运算符“|”,比如正则表达式:"(aa|bb|cc)"就表示匹配"aa"、"bb"、"cc"三个字符串中的其中一个。
    7. 边界匹配符:
    8. 贪婪、勉强、占有模式的数量标识符:

    (二)Java正则表达式的简单用法

    1. 两个关键类:(1)Pattern:正则表达式编译后在内存中的表示形式。是不可变类,可供多个线程并发使用;(2)Matcher:保存执行匹配所涉及的各种状态,多个Matcher对象可以共享一个Pattern对象。
    2. 简单用法程序示例:
      1 System.out.println(Pattern.matches("a\wb", "a_b")); // 输出:true
      2 Pattern p = Pattern.compile("a*b");
      3 Matcher m = p.matcher("aabzaaadaaafbc");
      4 System.out.println(m.matches()); // 输出:false
    3. Matcher类的常用方法:

    4. 程序举例:
       1   public static void test1() {
       2         System.out.println(Pattern.matches("a\wb", "a_b")); // 输出:true
       3 
       4         Pattern p = Pattern.compile("a*b");
       5         Matcher m = p.matcher("aabzaaadaaafbc");
       6 
       7         System.out.println(m.matches()); // 输出:false
       8         System.out.println(m.find()); // 输出:true
       9         System.out.println(m.group()); // 输出:b
      10         System.out.println(m.start()); // 输出:2
      11         System.out.println(m.end()); // 输出:3
      12         System.out.println(m.lookingAt()); // 输出:true
      13         m.reset("zab");
      14         System.out.println(m.lookingAt()); // 输出:false
      15     }
      16 
      17     public static void test2() {
      18         Matcher m = Pattern.compile("\w+").matcher("Java is very easy!");
      19 
      20         while (m.find()) {
      21             System.out.println(m.group() + "子串的起始位置:" + m.start() + ",结束位置:"
      22                     + m.end());
      23         }
      24 
      25         int i = 0;
      26         while (m.find(i)) {
      27             System.out.print(m.group() + "	");
      28             i++;
      29         }
      30 
      31         // 输出:
      32         // Java子串的起始位置:0,结束位置:4
      33         // is子串的起始位置:5,结束位置:7
      34         // very子串的起始位置:8,结束位置:12
      35         // easy子串的起始位置:13,结束位置:17
      36         // Java ava va a is is s very very ery ry y easy easy asy sy y
      37     }
      38 
      39     public static void test3() {
      40         String[] mails = { "Jiayongji@163.com", "Jiayongji@gmail.com",
      41                 "jy@hust.org", "wawa@abc.cc" };
      42         String mailRegEx = "\w{3,20}@\w+\.(com|cn|edu|org|net|gov)";
      43         Pattern mailPattern = Pattern.compile(mailRegEx);
      44 
      45         Matcher mailMatcher = null;
      46 
      47         for (String mail : mails) {
      48             if (mailMatcher == null) {
      49                 mailMatcher = mailPattern.matcher(mail);
      50             } else {
      51                 mailMatcher.reset(mail);
      52             }
      53 
      54             System.out.println(mail + (mailMatcher.matches() ? "是" : "不是")
      55                     + "一个合法的邮箱地址");
      56         }
      57 
      58         // 输出:
      59         // Jiayongji@163.com是一个合法的邮箱地址
      60         // Jiayongji@gmail.com是一个合法的邮箱地址
      61         // jy@hust.org不是一个合法的邮箱地址
      62         // wawa@abc.cc不是一个合法的邮箱地址
      63 
      64     }
      65 
      66     public static void test4() {
      67         Matcher m = Pattern.compile("\bre\w*").matcher(
      68                 "Java is real good at inrestart and regex.");
      69         System.out.println(m.replaceAll("哈哈"));
      70 
      71         // 输出:
      72         // Java is 哈哈 good at inrestart and 哈哈.
      73 
      74     }

    Refer:《疯狂Java讲义(第二版)》

    (完)

  • 相关阅读:
    eclipse c++
    smb
    osx mount nfs/smb
    0927用的
    0926 隐藏地址栏
    0921笔记
    生成文件并下载
    在线图标
    react redux
    electron
  • 原文地址:https://www.cnblogs.com/jiayongji/p/5613846.html
Copyright © 2011-2022 走看看