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

  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. iOS开发之删除过期Provisioning Profiles方法

    1.在finder下打开go -> go to folder输入: ~/Library/MobileDevice/Provisioning Profiles 2.查看上面的列表,依照时间顺序删除 ...

  2. Linux 后台任务

    1 我想把updatedb命令(用于重新建立整盘索引的命令)放在后台运行. # updatedb & [1] 23336 注释:在所要执行的命令后面加上空格,再加上&符号即可实现后台执 ...

  3. win7无法安装Microsoft .NET Framework 4.5\4.0

    在安装一些软件的时候,要求安装环境下必须首先安装有Microsoft .NET Framework 4.5\4.0,可是下载了安装包却怎么也安装不了,安装到一定进度就失败了,反复安装重启,都没有成功, ...

  4. 第一百九十一节,jQuery EasyUI 入门

    jQuery EasyUI 入门 学习要点: 1.什么是 jQuery EasyUI 2.学习 jQuery EasyUI 的条件 3.jQuery EasyUI 的功能和优势 4.其他的 UI 插件 ...

  5. Eclipse 工作空间(Workspace)

    Eclipse 工作空间(Workspace) eclipse 工作空间包含以下资源: 项目 文件 文件夹 项目启动时一般可以设置工作空间,你可以将其设置为默认工作空间,下次启动后无需再配置: 工作空 ...

  6. apache2+svn Expected FS format '2'; found format '3'

    format格式与svn版本号我猜对应如下: 1.4.x 对应 format 2 1.5.x 对应 format 3 …… 1.8.x 对应 format 6 那么每个format创建出的repo要用 ...

  7. apache2+svn Cannot load modules/mod_dav_svn.so into server: \xd5\xd2\xb2\xbb\xb5\xbd\xd6\xb8\xb6\xa8\xb5\xc4\xc4\xa3\xbf\xe9\xa1\xa3

    按照svn里的readme文件安装配置apache2与svn后, 启动apache2服务的时候 出现下面的问题 Cannot load C:/Program Files/Apache Software ...

  8. postgresql学习文档

    字符串函数: http://www.php100.com/manual/PostgreSQL8/functions-string.html http://gavin-chen.iteye.com/bl ...

  9. ios --跳转到支付宝

    //跳转到支付宝 - (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request nav ...

  10. 现代 PHP 新特性系列

    生成器的创建和使用 http://laravelacademy.org/post/4317.html