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

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

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

  1. 两个关键类:(1)Pattern:正则表达式编译后在内存中的表示形式。是不可变类,可供多个线程并发使用;(2)Matcher:保存执行匹配所涉及的各种状态,多个Matcher对象可以共享一个Pattern对象。
  2. 简单用法程序示例:
     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
  3. Matcher类的常用方法:

  4. 程序举例:
       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 哈哈. }

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

(完)

随机推荐

  1. python第三周文件处理和函数-----下

    #默认参数的值是在一开始定义的时候就传给了函数, # 在后来的修改中不会被修改. #默认参数的值必须放到位置形参参数的最后面 #默认参数使用的场景是一个参数不经常变得场景,所以参数一般是不可变类型.字 ...

  2. 我的第八个java程序--读取word内容

    package World; import java.io.FileNotFoundException; import java.io.IOException; import org.apache.p ...

  3. 面试题:谈谈你对hibernate的理解

    说说这类问题一般要和一个东西比較.说说他们的长处和缺点,hibernate就和JDBC比較呗.你就说说JDBC的优缺点.然后说说hibernate的优缺点,最后对照得出hibernate更好. hib ...

  4. MathType公式行距设置的方法

    在使用普通的文档编辑器编辑数学公式的时候,大家会发现一些数学上特殊的符号.公式很难给编辑出来,有时候就算编辑出来了也不符号一些学术的规范.这个时候就可以使用MathType这款公式编辑器来编辑.但是在 ...

  5. JNI动态库生成、编译、查看相关简易资料

    有一篇好博文,大家可以看下http://www.cnblogs.com/zhangweia/archive/2010/09/16/1828176.html,我这里是参考其做的另外一个javah -cl ...

  6. HDU1087 Super Jumping! Jumping! Jumping! 最大连续递增子段

    Super Jumping! Jumping! Jumping! Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 ...

  7. Mac下使用Homebrew 安装MySQL

    安装 brew install mysql 卸载 brew uninstall mysql 启动mysql    mysql.server start 管理员账户    mysql -uroot 

  8. Laravel 的中大型专案架构

    好文:http://oomusou.io/laravel/laravel-architecture/

  9. gcc 编译 连接 生成可执行文件

    gcc c语言编译器 g++ c++编译器 gcc a.c  生成默认的a.out 可执行文件  ./a.out  来执行 gcc -c a.c 编译生成 a.o 目标文件 可以检查语法错误 gcc ...

  10. Python动态网站的抓取

    网页下载器 # coding:utf-8import requestsimport urllib2import systype = sys.getfilesystemencoding()class H ...