《学习正则表达式》
Overview
本笔记按照人民邮电出版社的《学习正则表达式》进行随笔记录,主打简洁。
一、什么是正则表达式
本章主要讲了一个案例——匹配北美电话号
直接用内容本身
707-827-7019用方括号+匹配数字:[0-9]就是 0 到 9,和[0123456789]一样
[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\d使用量词(-?,代表有 0 个或 1 个“-”)
?:0 或 1 个
+:1 或多个
*:0 或多个
\d{3}-? \d{3}-? \d{4}(\d{3,4}[.-]? )+(\d{3}[.-]? ){2}\d{4}可以带括号,也可以不带括号的版本
^:出现在正则表达式起始位置或者竖线(|)之后的脱字符^,表示电话号码会出现在一行的起始位置;^\(\d{3}\):带括号的三个数字^\d{3}[.-]?:不带括号的三个数字^(\(\d{3}\)|^\d{3}[.-]?:带不带括号都行的三个数字^(\(\d{3}\)|^\d{3}[.-]? )?:带不带括号都行的三个数字,并且“带不带括号都行的三个数字”也可以省略[.-]?:匹配一个可选的点号或连字符
^(\(\d{3}\)|^\d{3}[.-]? )? \d{3}[.-]? \d{4}$二、简单的模式匹配
本章看梳理了上一章用到的方法
匹配字符串字面值:就是直接用内容本身,默认区分大小写
匹配数字:
\d就是[0-9]就是[0123456789]用括号更方便,比如只想匹配0 和 1:
[01]用
\d适合匹配所有数字的情况,更简短
匹配非数字
\D就是[^0-9]或者[^\d]\D会匹配空格、标点符号(引号、连字符、反斜杠、方括号)等字符
匹配单词和非单词字符
\w只匹配字母、数字和下划线,在英语中等价于[_a-zA-Z0-9]\W在英语中等价于[^_a-zA-Z0-9]
字符简写式整理
字符简写式描 述\a报警符
[\b]退格字符
\c x控制字符
\d数字字符
\D非数字字符
\o xxx字符的八进制值
\w单词字符
\W非单词字符
\0空字符
\x xx字符的十六进制值
\u xxx字符的Unicode值
匹配空白符:
\s,会匹配空格,\t,\n,\r四种\S匹配非空白,也就是[^ \t\r\n]
所有的匹配空白符
\f对应描述为换页符;\h对应描述为水平空白符;\H对应描述为非水平空白符;对应描述为换行符;
对应描述为回车符;
\s对应描述为空白符;\S对应描述为非空白符;对应描述为水平制表符;
\v对应描述为垂直制表符;\V对应描述为非垂直制表符。
匹配任意字符
.比如匹配八个符号,可以
........也可以.{8}匹配单词边界用
\b,不消耗任何字符,比如,\b\w{7}\b,就是一个长度为 7 的单词匹配零个或多个字符:
.*相当于[^\n]或[^\n\r]点号也可以与表示“一个或多个”的量词(+)连用:
.+
三、边界
最后更新于
这有帮助吗?