diff --git a/notes/正则表达式.md b/notes/正则表达式.md index 52c30ff1..74c20087 100644 --- a/notes/正则表达式.md +++ b/notes/正则表达式.md @@ -1,27 +1,18 @@ -* [概述](#概述) -* [匹配单个字符](#匹配单个字符) -* [匹配一组字符](#匹配一组字符) -* [使用元字符](#使用元字符) - * [匹配空白字符](#匹配空白字符) - * [匹配特定的字符类别](#匹配特定的字符类别) - * [使用 POSIX 字符类](#使用-posix-字符类) -* [重复匹配](#重复匹配) -* [位置匹配](#位置匹配) - * [单词边界](#单词边界) - * [字符串边界](#字符串边界) -* [使用子表达式](#使用子表达式) -* [回溯引用](#回溯引用) - * [替换](#替换) - * [大小写转换](#大小写转换) -* [前后查找](#前后查找) -* [嵌入条件](#嵌入条件) - * [回溯引用条件](#回溯引用条件) - * [前后查找条件](#前后查找条件) +* [一、概述](#一概述) +* [二、匹配单个字符](#二匹配单个字符) +* [三、匹配一组字符](#三匹配一组字符) +* [四、使用元字符](#四使用元字符) +* [五、重复匹配](#五重复匹配) +* [六、位置匹配](#六位置匹配) +* [七、使用子表达式](#七使用子表达式) +* [八、回溯引用](#八回溯引用) +* [九、前后查找](#九前后查找) +* [十、嵌入条件](#十嵌入条件) -# 概述 +# 一、概述 正则表达式用于文本内容的查找和替换。 @@ -31,7 +22,7 @@ [正则表达式在线工具](http://tool.chinaz.com/regex) -# 匹配单个字符 +# 二、匹配单个字符 正则表达式一般是区分大小写的,但是也有些实现是不区分。 @@ -49,7 +40,7 @@ nam. My **name** is Zheng. -# 匹配一组字符 +# 三、匹配一组字符 **[ ]** 定义一个字符集合; @@ -73,7 +64,7 @@ abc[^0-9] 2. abc1 3. abc2 -# 使用元字符 +# 四、使用元字符 ## 匹配空白字符 @@ -92,21 +83,21 @@ abc[^0-9] ## 匹配特定的字符类别 -**1. 数字元字符** +### 1. 数字元字符 | 元字符 | 说明 | | ------------ | ------------ | | \d | 数字字符,等价于 [0-9] | | \D | 非数字字符,等价于 [^0-9] | -**2. 字母数字元字符** +### 2. 字母数字元字符 | 元字符 | 说明 | | ------------ | ------------ | | \w | 大小写字母,下划线和数字,等价于 [a-zA-Z0-9\_] | | \W | 对 \w 取非 | -**3. 空白字符元字符** +### 3. 空白字符元字符 | 元字符 | 说明 | | ------------ | ------------ | @@ -135,7 +126,7 @@ abc[^0-9] 使用时需要用两对方括号,例如 [[:alpha:]]。 -# 重复匹配 +# 五、重复匹配 **\+** 匹配 1 个或者多个字符, **\*** 匹配 0 个或者多个,**?** 匹配 0 个或者 1 个。 @@ -178,7 +169,7 @@ a.+c **abcabcabc** -# 位置匹配 +# 六、位置匹配 ## 单词边界 @@ -216,7 +207,7 @@ a.+c 6.      int c = a + b; 7. } -# 使用子表达式 +# 七、使用子表达式 使用 **( )** 定义一个子表达式。子表达式的内容可以当成一个独立元素,即可以将它看成一个字符,并且使用 * 等元字符。 @@ -264,7 +255,7 @@ a.+c 1. **192.168.0.1** 2. 555.555.555.555 -# 回溯引用 +# 八、回溯引用 回溯引用使用 **\n** 来引用某个子表达式,其中 n 代表的是子表达式的序号,从 1 开始。它和子表达式匹配的内容一致,比如子表达式匹配到 abc ,那么回溯引用部分也需要匹配 abc 。 @@ -350,7 +341,7 @@ $1\U$2\E$3 aBCd -# 前后查找 +# 九、前后查找 前后查找规定了匹配的内容首尾应该匹配的内容,但是又不包含首尾匹配的内容。向前查找用 **?=** 来定义,它规定了尾部匹配的内容,这个匹配的内容在 ?= 之后定义。所谓向前查找,就是规定了一个匹配的内容,然后以这个内容为尾部向前面查找需要匹配的内容。向后匹配用 ?<= 定义。 @@ -370,7 +361,7 @@ aBCd 对向前和向后查找取非,只要把 = 替换成 ! 即可,比如 (?=) 替换成 (?!) 。取非操作使得匹配那些首尾不符合要求的内容。 -# 嵌入条件 +# 十、嵌入条件 ## 回溯引用条件