- 通配符
| 通配符 | 含义 | 实例 |
|---|---|---|
| * | 匹配0或多个字符 | a*b a与b之间可以有任意长度的任意字符, 也可以一个也没有, 如aabcb, axyzb, a012b, ab |
| ? | 匹配任意一个字符 | a?b a与b之间必须也只能有一个字符, 可以是任意字符, 如aab, abb, acb, a0b |
| [list] | 匹配list中的任意单一字符 | a[xyz]b a与b之间必须也只能有一个字符, 但只能是 x 或 y 或 z, 如: axb, ayb, azb |
| [!list]或将’!’改成’^’ | 匹配 除list 中的任意单一字符 | a[!0-9]b a与b之间必须也只能有一个字符, 但不能是阿拉伯数字, 如axb, aab, a-b |
| [c1-c2] | 匹配c1-c2中的任意单一字符 | a[0-9]b 0与9之间有且只有一个字符,如a0b,a1b。 |
| [!c1-c2] | 匹配不在c1-c2的任意字符 | a[!0-9]b 如acb adb |
- 正则表达式
| 字符 | 含义 |
|---|---|
| ^ | 以什么开头 |
| $ | 以什么结尾 |
| ^$ | 表示空行 |
| . | 任意单个字符 比如a.b ,即a和b直接有任意一个字符 |
| [] | 字符范围,如[a-z] |
| \ | 转义字符,恢复字符原来的含义^ |
| * | 前面的字符出现0次或多次,比如a*,可以匹配到123a,123aa,123aaa等字符 |
| .* | 任意字符出现了任意次 |
| [c1-c2] | 匹配c1-c2中的任意单一字符 |
| + | 匹配前一个字符1次或多次(注意与*区分开) |
| [:/]+ | 匹配括号内的字符”:”或者”/“ 1次或多次 |
| ? | 匹配前1个字符0次或1次 |
| | | 或 |
| () \n | 1个整体 abc123 —–> (abc) (123) —-> \2\1 ( \2表示引用第二个小括号的内容,\1表示引用第一个小括号的内容) |
| a{n,m} | a这个字符最少出现n次,最多出现m次 |
| a{n,} | a这个字符最少出现n次,最多不限 |
| a{,m} | a这个字符最少出现0次,最多出现m次 |
如何表示0到9数字?
1
2
3[0-9]
##或者
[:digit:]如何表示英文字母?
1
2
3[a-zA-Z]
##或者
[:alpha:]如何表示“13”头的手机号码?
1
13[0-9]{9}
如何表示电子邮箱地址?
1
[a-zA-Z0-9._]+@[A-Za-z0-9.]+\.[a-zA-Z]{2,3}
5.假设我们要搜索美国的社会安全号,格式是999-99-9999,对应的正则表达式
1 | [0-9]{3}\-[0-9]{2}\-[0-9]{4} |
如果要查找一个文件中“a.txt”的所有邮箱
1 | grep -oE '[a-zA-Z0-9._]+@[A-Za-z0-9.]+\.[a-zA-Z]{2,3}' a.txt |