[root@service99 regular]# cat test.info goole go go go come on goooooooooo [root@service99 regular]# grep --color "o*" test.info goole go go go come on goooooooooo [root@service99 regular]# grep --color "go*" test.info goole go go go goooooooooo [root@service99 regular]# grep --color "w.*d" price.txt //经常与.一起使用 hello,world!
扩展正则表达式
问号
问号表示前面的字符可以不出现或者出现一次。不匹配重复出现的字符。
[root@service99 regular]# egrep --color "91?" price.txt This price is $4.99 911
加号
加号表示前面的字符可以出现一次或者多次,但必须至少出现一次,该字符若是不存在,则模式不匹配。
[root@service99 regular]# egrep --color "9+" price.txt This price is $4.99 911 [root@service99 regular]# egrep --color "1+" price.txt 1234556 911 11806
使用大括号
使用大括号指定对可重复的正则表达式的限制,通常称为间隔。
- m:该正则表达式正好出现m次
- m,n:该正则表达式出现最少m次,最多n次
[root@service99 regular]# echo "This is test,test is file." | egrep --color "test{0,1}" This is test,test is file. [root@service99 regular]# echo "This is test,test is file." | egrep --color "is{1,2}" This is test,test is file.
正则表达式实例
这里有一个实例,对基本的正则表达式进行了练习和实例。
因为正则表达式,单看概念或者理论还是比较简单的,然而在实际的使用中,却不是那么好用,一旦用好了,对效率的提升绝对时可观的。
1.过滤下载文件中包含 the 关键字
grep --color "the" regular_express.txt
2.过滤下载文件中丌包含 the 关键字
grep --color -vn "the" regular_express.txt
3.过滤下载文件中丌论大小写 the 关键字
grep --color -in "the" regular_express.txt
4.过滤 test 或 taste 这两个单字
grep --color -En 'test|taste' regular_express.txt grep --color -i "t[ae]ste\{0,1\}" 1.txt
5.过滤有 oo 的字节
grep --color "oo" regular_express.txt
6.过滤丌想要 oo 前面有 g 的
grep --color [^g]"oo" regular_express.txt grep --color "[^g]oo" regular_express.txt
7.过滤 oo 前面丌想有小写字节
egrep --color "[^a-z]oo" regular_express.txt
8.过滤有数字的那一行
egrep --color [0-9] regular_express.txt
9.过滤以 the 开头的
egrep --color ^the regular_express.txt
10.过滤以小写字母开头的
egrep --color ^[a-z] regular_express.txt
11.过滤开头丌是英文字母
egrep --color ^[^a-Z] regular_express.txt
12.过滤行尾结束为小数点.那一行
egrep --color $"\." regular_express.txt
13.过滤空白行
egrep --color "^$" regular_express.txt
14.过滤出 g??d 的字串
egrep --color "g..d" regular_express.txt
15.过滤至少两个 o 以上的字串
egrep --color "ooo*" regular_express.txt egrep --color o\{2,\} regular_express.txt
16.过滤 g 开头和 g 结尾但是两个 g 之间仅存在至少一个 o
egrep --color go\{1,\}g regular_express.txt
17.过滤任意数字的行
egrep --color [0-9] regular_express.txt
18.过滤两个 o 的字串
egrep --color "oo" regular_express.txt
19.过滤 g 后面接 2 到 5 个 o,然后在接一个 g 的字串
egrep --color go\{2,5\}g regular_express.txt
20.过滤 g 后面接 2 个以上 o 的
egrep --color go\{2,\} regular_express.txt