简介
以前学过正则表达式30分钟入门教程,但好久没用忘了。总是和shell里面的一些特殊字符混淆,所以在理解的基础上自己也记下笔记。
元字符
元字符 | 功能 | 示例 |
---|
^ | 行首定位符 | ^love |
$ | 行尾定位符 | love$ |
. | 匹配任意打个字符 | l…e |
* | 前面字符重复零次或更多次 | ab*love |
.* | shell中的*类似 | r.*t |
[] | 匹配指定范围内的一个字符 | [lL]ove |
[ - ] | 匹配指定范围内的一个字符 | [a-z0-9]ove |
[^] | 匹配不在指定组内的字符 | [^a-z0-9]ove |
\ | 用来转义元字符 | love. |
\< | 词首定位符 | <love |
\> | 词尾定位符 | love> |
\(…\) | 匹配稍后使用的字符的标签 | 在vim下,更换ip :%s/(172.16.130).1/\1.5/ |
x\{n\} | 字符x重复n次 | o\{5\} |
x\{n,\} | 字符x重复n次或更多次 | o\{5,\} |
x\{n,m\} | 字符x重复n到m次 | o\{5,10\} |
最具有混淆的就是*了,在shell表示匹配任意字符
元字符 | 功能 | 示例 |
---|
+ | 匹配一个或多个前导字符 | [a-z]+ove |
? | 匹配零个或一个前导字符 | lo?ve |
a|b | 匹配a或b | love|hate |
() | 组字符 | love(able|rs) |
(…)(…)\1\2 | 标签匹配字符 | (love)able\1er |
x{n} | 字符x重复n次 | o{5} |
x{n,} | 字符x重复n次或更多次 | o{5,} |
x{n,m} | 字符x重复n到m次 | o{5,10} |
示例 | 重复部分 | 重复次数 |
---|
love* | e | 0-n |
love? | e | 0-1 |
love+ | e | 1-n |
love{2} | e | n |
lo(ve)* | ve | 0-n |
lo(ve)? | ve | 0-1 |
lo(ve)+ | ve | 1-n |
lo(ve){2} | ve | n |