快速过一遍
匹配单个字符
字符 . 可以匹配任何一个单个的字符
因为字符 . 在正则表达式中有特殊的含义,如果想搜索 . 的话,需要进行转义: \.
匹配一组字符
[] 定义一个字符集合
- 字符区间
取非 ^
元字符
在正则表达式里有特殊含义的字符,比如 . 表示匹配任意一个字符,[ 表示一个字符集合的开始
因为这些元字符在正则表达式里有特殊含义,所以无法用来代表本身。因此这种情况就需要转义
空白字符
| 元字符 | 说明 |
|---|---|
| \s | 任何一个空白字符 |
| \S | 任何一个非空白字符 |
数字
| 元字符 | 说明 |
|---|---|
| \d | 任何一个数字字符 |
| \D | 任何一个非数字字符 |
字母和数字
| 元字符 | 说明 |
|---|---|
| \w | 任何一个字母数字字符(大小写均可)或下划线字符,等价于 [a-zA-Z0-9_] |
| \W | 任何一个非字母数字字符(大小写均可)或下划线字符,等价于 [^a-zA-Z0-9_] |
重复匹配
+匹配一个或多个字符*匹配零个或多个字符?匹配零个或一个字符- 匹配的重复次数
{数字}设定一个精确的值{数字, 数字}设定一个区间{数字, }至少重复多少次
防止过度匹配
所谓“贪婪型”,在进行匹配时,会尽可能地从一段文本的开头一直匹配到这段文本的末尾。而不是从这段文本的开头开始碰到第一个匹配为止
| 贪婪型元字符 | 懒惰型元字符 |
|---|---|
* |
*? |
+ |
+? |
{n, } |
{n, }? |
位置匹配
\b 单词边界
^ 字符串开头
$ 字符串结尾
子表达式
( 和 ) 括起来
命令总结
- 匹配单个字符
.- 转义
\.
- 匹配一组字符
[]定义一个字符集合-字符区间- 取非
^
- 元字符
\s空白字符\d数字\w字母、数字和下划线
- 重复匹配
+匹配一个或多个字符*匹配零个或多个字符?匹配零个或一个字符- 匹配的重复次数
{数字}设定一个精确的值{数字, 数字}设定一个区间{数字, }至少重复多少次
- 防止过度匹配
- 贪婪型元字符
- 懒惰型元字符
- 位置匹配
\b单词边界^字符串开头$字符串结尾