《学习正则表达式》

Overview

本笔记按照人民邮电出版社的《学习正则表达式》进行随笔记录,主打简洁。

一、什么是正则表达式

本章主要讲了一个案例——匹配北美电话号

707-827-7019
[0-9] [0-9] [0-9]-[0-9] [0-9] [0-9]-[0-9] [0-9] [0-9] [0-9]
\d\d\d-\d\d\d-\d\d\d\d
\d\d\d\D\d\d\d\D\d\d\d\d
\d\d\d.\d\d\d.\d\d\d\d
\d{3}-? \d{3}-? \d{4}
(\d{3,4}[.-]? )+
(\d{3}[.-]? ){2}\d{4}
^(\(\d{3}\)|^\d{3}[.-]? )? \d{3}[.-]? \d{4}$

二、简单的模式匹配

本章看梳理了上一章用到的方法

  1. 匹配字符串字面值:就是直接用内容本身,默认区分大小写

  2. 匹配数字:\d 就是 [0-9] 就是 [0123456789]

    1. 用括号更方便,比如只想匹配0 和 1:[01]
    2. \d适合匹配所有数字的情况,更简短
  3. 匹配非数字

    1. \D 就是 [^0-9] 或者 [^\d]
    2. \D会匹配空格、标点符号(引号、连字符、反斜杠、方括号)等字符
  4. 匹配单词和非单词字符

    1. \w只匹配字母、数字和下划线,在英语中等价于 [_a-zA-Z0-9]
    2. \W 在英语中等价于 [^_a-zA-Z0-9]
  5. 字符简写式整理

    字符简写式 描 述
    \a 报警符
    [\b] 退格字符
    \c x 控制字符
    \d 数字字符
    \D 非数字字符
    \o xxx 字符的八进制值
    \w 单词字符
    \W 非单词字符
    \0 空字符
    \x xx 字符的十六进制值
    \u xxx 字符的Unicode值
  6. 匹配空白符:

    1. \s,会匹配空格,\t,\n,\r四种
    2. \S匹配非空白,也就是[^ \t\r\n]
  7. 所有的匹配空白符

    1. \f 对应描述为换页符;
    2. \h 对应描述为水平空白符;
    3. \H 对应描述为非水平空白符;
    4. 对应描述为换行符;
    5. 对应描述为回车符;
    6. \s 对应描述为空白符;
    7. \S 对应描述为非空白符;
    8. 对应描述为水平制表符;
    9. \v 对应描述为垂直制表符;
    10. \V 对应描述为非垂直制表符。
  8. 匹配任意字符.

    1. 比如匹配八个符号,可以........也可以.{8}
    2. 匹配单词边界用\b,不消耗任何字符,比如,\b\w{7}\b,就是一个长度为 7 的单词
    3. 匹配零个或多个字符:.* 相当于 [^\n][^\n\r]
    4. 点号也可以与表示“一个或多个”的量词(+)连用:.+

三、边界