diff --git a/docs/regex.md b/docs/regex.md
index f141ae0..cad8a2f 100644
--- a/docs/regex.md
+++ b/docs/regex.md
@@ -10,12 +10,18 @@ RegEX 备忘清单
这是开始使用正则表达式(Regex)的快速备忘单。
-- [Python 中的 Regex](#python-中的正则表达式) _(Quick Reference)_
-- [JavaScript 中的 Regex](#javascript-中的正则表达式) _(Quick Reference)_
-- [PHP 中的 Regex](#php中的正则表达式) _(Quick Reference)_
-- [Java 中的 Regex](#java-中的正则表达式) _(Quick Reference)_
-- [MySQL 中的 Regex](#mysql中的正则表达式) _(Quick Reference)_
-- [Vim 中的 Regex](./vim#vim-搜索和替换) _(Quick Reference)_
+- [Python 中的 Regex](#python-中的正则表达式)
+ _(速查手册)_
+- [JavaScript 中的 Regex](#javascript-中的正则表达式)
+ _(速查手册)_
+- [PHP 中的 Regex](#php中的正则表达式)
+ _(速查手册)_
+- [Java 中的 Regex](#java-中的正则表达式)
+ _(速查手册)_
+- [MySQL 中的 Regex](#mysql中的正则表达式)
+ _(速查手册)_
+- [Vim 中的 Regex](./vim#vim-搜索和替换)
+ _(速查手册)_
- [在线 Regex 测试器](https://regex101.com/) _(regex101.com)_
- [轻松学习 Regex](https://github.com/ziishaned/learn-regex/blob/master/translations/README-cn.md) _(github.com)_
- [正则表达式实例搜集](https://jaywcjlove.github.io/regexp-example) _(jaywcjlove.github.io)_
@@ -32,6 +38,7 @@ RegEX 备忘清单
`[0-9]` | 范围内的数字:`0-9`
`[a-zA-Z]` | 范围内的字符:
`a-z` 或 `A-Z`
`[a-zA-Z0-9]` | 范围内的字符:
`a-z`、`A-Z` 或 `0-9`
+
### 量词
@@ -47,24 +54,27 @@ RegEX 备忘清单
`a*` | 贪心量词
`a*?` | 惰性量词
`a*+` | 占有量词
+
### 常用元字符
-- \^
-- \{
-- \+
-- \<
-- \[
-- \*
-- \)
-- \>
-- \.
-- \(
-- \|
-- \$
-- \\
-- \?
-
+模式 | 描述
+:-|-
+`^` | 匹配字符串的开头
+`{` | 开始一个数量限定符,指定出现次数
+`+` | 匹配前面的元素一次或多次
+`<` | 非标准的正则表达式元字符(在 HTML 中常用)
+`[` | 开始一个字符类
+`*` | 匹配前面的元素零次或多次
+`)` | 结束捕获组
+`>` | 非标准的正则表达式元字符(在 HTML 中常用)
+`.` | 匹配除换行符之外的任意字符
+`(` | 开始一个捕获组
+`\|` | 在正则表达式模式中作为逻辑或操作
+`$` | 匹配字符串的结尾
+`\` | 转义元字符,使其具有字面意义
+`?` | 匹配前面的元素零次或一次
+
使用 `\` 转义这些特殊字符
@@ -126,6 +136,7 @@ RegEX 备忘清单
`\z` | 字符串的绝对结尾
`\b` | 一个词的边界
`\B` | 非单词边界
+
### 替代
@@ -144,6 +155,7 @@ RegEX 备忘清单
`\U` | 大写转换
`\L` | 小写转换
`\E` | 终止任何转换
+
### 组构造
@@ -160,6 +172,7 @@ RegEX 备忘清单
`(?P...)` | 命名捕获组
`(?imsxXU)` | 内联修饰符
`(?(DEFINE)...)` | 在使用它们之前预定义模式
+
### 断言
@@ -368,6 +381,7 @@ RegEX 备忘清单
:-|-
`(in\|out)put` | 匹配 input 或 output
`\d{5}(-\d{4})?` | 美国邮政编码 _(“+ 4”可选)_
+
如果组后匹配失败,解析器会尝试每个替代方案。
@@ -395,10 +409,13 @@ RegEX 备忘清单
:-|-
`(?>red\|green\|blue)` | 比非捕获更快
`(?>id\|identity)\b` | 匹配 id,但不匹配 identity
+
-"id" 匹配,但 `\b` 在原子组之后失败,
+id 匹配,但 `\b` 在原子组之后失败,
解析器不会回溯到组以重试“身份”
+---
+
如果替代品重叠,请从长到短命令。
### 零宽度断言 Lookaround(前后预查)
@@ -648,7 +665,7 @@ M(?(?=.*?\bher\b)s|r)\.
Python 中的正则表达式
----------------
+---
### 入门
@@ -662,6 +679,7 @@ import re
#### re.search()
+
```python
>>> sentence = 'This is a sample string'
@@ -672,6 +690,7 @@ False
```
#### re.findall()
+
```python
>>> re.findall(r'\bs?pare?\b', 'par spar apparent spare part pare')
@@ -681,6 +700,7 @@ False
```
#### re.finditer()
+
```python
>>> m_iter = re.finditer(r'[0-9]+', '45 349 651 593 4 204')
@@ -689,6 +709,7 @@ False
```
#### re.split()
+
```python
>>> re.split(r'\d+', 'Sample123string42with777numbers')
@@ -696,6 +717,7 @@ False
```
#### re.sub()
+
```python
>>> ip_lines = "catapults\nconcatenate\ncat"
@@ -706,6 +728,7 @@ False
```
#### re.compile()
+
```python
>>> pet = re.compile(r'dog')