语法
匹配数字
| 语法 | 说明 |
|---|---|
| [0-6] | 匹配数字”1”、”2”、”3”、”4”、”5”、”6” |
| [13579] | 匹配”1”、”3”、”5”、”7”、”9” |
| \d | 匹配所有数字0~9,等效于:[0-9] |
匹配字母
| 语法 | 说明 |
|---|---|
| [a-f] | 匹配字母”a”、”b”、”c”、”d”、”e”、”f” |
| [a-fA-F] | 匹配字母”a”、”b”、”c”、”d”、”e”、”f”和”A”、”B”、”C”、”D”、”E”、”F” |
| [\w] | 匹配26个大小写字母、数字和下划线;等效于:[a-zA-Z0-9_] |
匹配非打印字符
特殊字符的匹配有些编程语言可能会支持的更多。
| 语法 | 说明 |
|---|---|
| \f | 匹配一个换页符 |
| \n | 匹配一个换行符 |
| \r | 匹配一个回车符 |
| \t | 匹配一个制表符 |
| \v | 匹配一个垂直制表符 |
| \uxxx | 匹配一个unicode字符,其中xxx是unicode的编码 |
匹配数量
| 语法 | 匹配数量 | 说明 | 示例 | 示例匹配结果 |
|---|---|---|---|---|
| {1,3} | 匹配1~3次 | \d\.\d{1,2} | “0.25”、”1.2” | |
| {1,} | 匹配1次以上 | \d\.\d{1,} | “0.25”、”3.1415926” | |
| {,2} | 匹配0~2次 | \wo{,2}\w | “ab”、”boy”、”good” | |
| {2} | 匹配2次 | \wo{2}\w | “good”、”cool”、”room” | |
| ? | 匹配0~1次 | 等同”{,1}” | https? | “http”、”https” |
| * | 匹配0~n次 | 等同”{,}” | \wo*\w | “ab”、”boy”、”good”、”gooo…d” |
| + | 匹配1~n次 | 等同”{1,}” | \d\.\d+ | “0.25”、”3.1415926” |
负(反向)匹配
| 正则表达式 | 说明 |
|---|---|
| [^a-z] | 匹配 “a” 到 “z” 之外的字符 |
| [^abc] | 匹配 “a”、”b”、”c” 之外的字符 |
| [^\w] | 等同于 “\W” |
| [^\d] | 等同于 “\D” |
| [^\s] | 等同于 “\S” |
引用变量

| 正则表达式 | 替换为 | 结果 |
|---|---|---|
| (eth0) | $1abc | eth0abc |
常用的元字符
| 元字符 | 说明 |
|---|---|
| . | 匹配除换行符以外的任意字符 |
| \s | 匹配任意的空格 |
| \d或[0-9] | 匹配一个数字 |
| ^ | 匹配字符串的开始位置 |
| $ | 匹配字符串的结束位置 |
| \w | 匹配字母、数字和下划线 等效于[a-zA-Z0-9_] |
eg.
- .* 匹配任意行
- \d\d 匹配连续的2个数字
- ^[0-9] 匹配字符串开始位置是数字的字符串
- \s$ 匹配字符串结尾是空格的字符串
- ^$ 匹配不含空格的空行
-
常用正则
匹配IP地址
([0-9]{1,3}\.){3}[0-9]{1,3}
反向匹配
# 查找不包含关键字的行^((?!innerIpAddress).)*$
零宽断言
先行断言 (?=exp)
后发断言 (?<=exp)
# 匹配eth0的IPifconfig eth0|grep -oP "[0-9]{1,3}\.[0-9]{1,3}.*(?=netmask)"
相关工具
在线正则表达式工具:https://rubular.com/
- 正则表达式语法分析:https://regexper.com/
- 正则表达式调试、性能分析:https://regex101.com/
