前言
本系列目录
- Linux Shell和基本指令
- Bash shell语法
- 正则表达式
- 文本处理之grep
- 文本处理之sed
- 文本处理之awk
- Text GUI编程
- Tomcat启动脚本分析
- gradlew脚本分析
正则简介就不说了,最常用的场景在使用vim、grep的时候,比如要使用vim编辑一个文本,可以通过正则检索字符,下面是元字符的一些列表。
| 元字符 | 作用 | |
|---|---|---|
| . | 匹配除了换行符外的任意一个字符,例如:a..d会匹配在a和d这两个字母之间有两个字符的单词 | |
| ? | 与前面的0个或1个正则表达式一致,一般匹配单个字符 | |
| * | 前一个字符匹配0次或任意多次 ,例如:a.*d会匹配a和d之间有任意字符 | |
| + | 与前面的多个正则表达式一致。功能类似于*,但必须匹配多个 | |
| {N} | 匹配N次以上 | |
| {N,M} | 至少匹配N次,但不能超过M次 | |
| - | 表示除开始和最后一个以外的目录范围,或表示目录的末尾位置 | |
匹配行首.例如:^hello会匹配以hello开头的行 | ||
| $ | 匹配行尾.例如:world$会匹配以world结尾的行,^$会匹配空白行 | |
| [...] | 匹配任意字符 | |
| \ | 转义符,例如:.$匹配.结尾的行 | |
| [^] | 匹配不是^后面的字符 | |
| `、 | ` | 或 |
| 扩展方括号 | 作用 | |
|---|---|---|
| [:alpha:] | 匹配A-Za-z字母字符 | |
| [:alnum:] | 匹配 0–9、A–Z、 a–z组成的字符串。 | |
| [:blank:] | 空格或制表符 | |
| [:digit:] | 0-9数字 | |
| [:lower:] | a–z小写字母的。 | |
| [:space:] | 任何空白字符:空格、制表符、NL、FF、VT、CR。 | |
| [:upper:] | A–Z大写字母。 |
示例
查找指定字符开头
$ cat 1.txt
abc
abcd
bcde
123456
张三
李四
$ grep -E '^ab' 1.txt
abc
abcd
查找指定字符结尾
$grep -E '三$' 1.txt
张三
查找出现指定次数的字符
$ echo "aabbccdd" >1.txt
$ grep -E 'd{2}' 1.txt
aabbccdd
查找大、小写字符
(如果在终端中,会高亮出来匹配到的字符)
$ echo "AAaabbccddEE" >1.txt
$ grep -E '[[:lower:]]' 1.txt
AAaabbccddEE
$ grep -E '[[:upper:]]' 1.txt
AAaabbccddEE
匹配两个字且张开头的人名
$ cat 1.txt
张三
李四
张三三
李四四
张五
$ grep -E '^张.$' 1.txt
张三
张五
匹配A或者B开头的字符
$ cat 1.txt
Abc
hdy
Bcd
bcd
$ grep -E '^[AB]' 1.txt
Abc
Bcd
匹配于此除外
如匹配除了A、B开头的字符,第二个^表示取反。
¥ cat 1.txt
Abc
hdy
Bcd
bcd
$ grep -E '^[^AB]' 1.txt
hdy
bcd