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

  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. stm32开发板无法正常写入的问题或者写入后无法正常运行的问题

    在调试stm32的程序的时候遇到这样一个问题. 用Keil往stm32里写入程序时出现无法访问内存的错误.情况如下 然后 J-link没有提示异常.偶尔可以下载成功,但是程序无法正确的执行. 经过一番 ...

  2. Java基础01 从HelloWorld到面向对象(转载)

    Java是完全面向对象的语言.Java通过虚拟机的运行机制,实现“跨平台”的理念. "Hello World!" public class HelloWorld{    publi ...

  3. 学习spring2--跟我一起学Spring 3(3)–使用Spring开发第一个HelloWorld应用

    http://www.importnew.com/13246.html     首页 所有文章 资讯 Web 架构 基础技术 书籍 教程 我要投稿 更多频道 » - 导航条 - 首页 所有文章 资讯 ...

  4. jsp a href怎么传参数?

    jsp中超链接传值使用键值对格式,多个键值对之间用&分隔,即<a href="show.jsp?name=tom&pass=123&score=78,5&quo ...

  5. WPF-Binding的源

    1. 绑定到其它元素 <Grid> <StackPanel> <TextBox x:Name="textbox1" /> <Label C ...

  6. VS+mysql+EF搭建

    2016年7月6日更新: vs2010只需要安装mysql的.net connector就可以 vs2012, vs2015都需要安装.net connector + ODBC connector才行 ...

  7. linux 文本编辑器

    文本编辑器 文本编辑器是Linux操作系统中的重要工具.其中,VI是使用最广泛的文本编辑器,其可以在任何shell中使用.此外,Red Hat Enterprise Linux6 还提供了gedit工 ...

  8. [Spring Data MongoDB]学习笔记--牛逼的MongoTemplate

    MongoTemplate是数据库和代码之间的接口,对数据库的操作都在它里面. 注:MongoTemplate是线程安全的. MongoTemplate实现了interface MongoOperat ...

  9. 160823、ionic上拉/下拉更新数据

    <!DOCTYPE html> <html ng-app="myApp"> <head> <meta charset="UTF- ...

  10. java内部类详细介绍

    0.内部类与一般类有所不同,它是放在外部类的内部即可作为外部类的成员变量,也可放在方法内部作为局部变量,既然是变量,那么它可以用 private static 修饰符修饰,而外部类则不能,这也是内部类 ...