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

  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. Sublime 中 SFTP插件的使用

    首先说明的是Sumblime Text 3,下载安装后,打开软件, 按下Ctrl+Shift+P调出命令面板, 按回车键后弹出下面的 然后 点击左上角的 文件 >SFTP/FTP > Se ...

  2. void bind(String sName,Object object);――绑定:把名称同对象关联的过程

    void bind(String sName,Object object);――绑定:把名称同对象关联的过程 void rebind(String sName,Object object);――重新绑 ...

  3. 集合映射中的映射列表(使用xml文件)

    如果持久化类具有List对象,我们可以通过映射文件中的类的<list>元素或注释来映射List. 在这里,我们正在使用论坛的场景,其中一个问题有多个答案. 在这里,我们使用论坛的场景,其中 ...

  4. aspx.cs方法设置webmenthod特性接收ajax请求

    cs代码: public partial class TelerikWebMethod : BasePage//System.Web.UI.Page { protected void Page_Loa ...

  5. 用ElasticSearch搭建自己的搜索和分析引擎【转自腾讯Wetest】

    本文大概地介绍了ES的原理,以及Wetest在使用ES中的一些经验总结.因为ES本身涉及的功能和知识点非常广泛,所以这里重点挑出了实际项目中可能会用到,也可能会踩坑的一些关键点进行了阐述. 一 重要概 ...

  6. EasyNVR摄像机无插件流媒体服务器对所在操作系统配置的需求

    背景需求 随着EasyNVR使用的用户越来越多,用户在使用过程中的常见问题我们也做出了一定的总结,以及在升级到3.0版本之后,我们的启动方式和配置 功能也有了一些改变.因此在此做出一些总结. 对于Ea ...

  7. Xamarin.Forms学习之Page Navigation(二)

    在上一篇的文章中,对页面常规的导航做一些分享,然而在实际的编程中,页面数据的保持,传值等等都有很多,这篇文章就对这些相关内容做一个分享和记录,有问题,希望大家留言指正.这一篇从实现业务逻辑来讲并没有什 ...

  8. java.lang.ClassFormatError: Truncated class file

    之前跑的很好的程序,因为我本地IDE出了问题的原因,倒是编译的错误的class文件,结果点击的时候报这样的错误,后来重新clean了工程,重新打包解压启动,问题依旧. 解决办法: 把tomcat的wo ...

  9. 小白学linux命令

    小白是景女神全栈开发股份有限公司的一名财务实习员工,经过3个月的实习期,小白是过五关斩六将啊!终于成为了公司的一名正式员工,而且收到了景总亲自发来贺喜的邮件:“欢迎你加入大家庭,公司也本着员工全面发展 ...

  10. MySQL中行锁的算法

    行锁的3中算法 Record Lock:单个行记录上的锁 Gap Lock:间隙锁,锁定一个范围,但不包含记录本身 Next-key Lock:Gap Lock+Record Lock锁定一个范围,并 ...