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

  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() + "\t");
    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讲义(第二版)》

(完)

随机推荐

  1. centos6.5下redis集群配置(多机多节点)

    可参考官网文档:redis集群配置 需要注意的是,集群中的每个节点都会涉及到两个端口,一个是用于处理客户端操作的(如下介绍到的6379/6380),另一个是10000+{监听端口},用于集群各个节点间 ...

  2. linux命令 — lsof 查看进程打开那些文件 或者 查看文件给那个进程使用

    lsof命令是什么? 可以列出被进程所打开的文件的信息.被打开的文件可以是 1.普通的文件,2.目录  3.网络文件系统的文件,4.字符设备文件  5.(函数)共享库  6.管道,命名管道 7.符号链 ...

  3. Sphinx 安装与使用(1)-- 安装Coreseek

    Coreseek就是Sphinx的中文版 官方网站 http://www.coreseek.cn/ 一.安装 1.修改LANG 永久修改: vim /etc/locale.conf LANG=&quo ...

  4. Java进阶03 IO基础(转载)

    IO示例 下面是演示的文件file.txt Hello World! Hello Nerd! 先来研究一个文件读取的例子: import java.io.*;public class Test{ pu ...

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

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

  6. 集合Map映射(使用xml文件)

    Hibernate允许我们将Map元素与RDBMS进行映射. 我们知道,List和Map是基于索引的集合. 在map的情况下,索引列作为键,元素列用作值. 使用xml文件在集合映射中映射Map的示例 ...

  7. 嵌入式开发之davinci--- 8148/8168/8127 中的音频alsa 采集

    1.snd_pcm_open,打开句柄. 2.配置参数,可能用到的接口:snd_pcm_hw_params_alloca.snd_pcm_hw_params_any.snd_pcm_hw_params ...

  8. week 5: ;Lasso regression & coordinate descent

    笔记. 岭回归, 计算回归系数时使( RSS(w)+λ||w||2) 最小 岭回归的结果会是所有的特征的weight都较小,但大多数又不完全为零. 而实际情况中,有的特征的确与输出值相关程度很高,we ...

  9. 绝对定位position: absolute;

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  10. The server encountered an internal error that prevented it from fulfilling this request.(JsonMappingException: Conflicting getter definitions)

    在测试一个方法,dubug查看查询结果已经出来了,结果页面上是The server encountered an internal error that prevented it from fulfi ...