一、基础正则表达式
(一)基础字符列表
正则表达式就是一套处理字符串的规则和方法。以行为单位对字符串进行处理,达到快速过滤或者替换字符串的目的。
下面是正则表达式的特殊字符:
字符 | 说明 |
^ | 以什么字符开头 |
$ | 以什么字符结尾 |
. | 有且只能代表任意一个字符 |
转义字符,针对有特殊意义的字符,比如:. | |
* | 重复零个或者多个前面的一个字符 |
.* | 匹配所有字符 |
[] | 匹配字符集中的任意一个字符,注意与()的区别,()可以是整个组中的多个字符 |
[^] | 匹配不是^后面的字符 |
{n,m} | 重复前一个任意字符n到m次,注意特殊字符进行转义使用{n,m} |
{n,} | 至少重复前一个任意字符n次,注意特殊字符进行转义使用{n,} |
{n} | 重复n次前面任意一个字符n次,注意特殊字符进行转义使用{n} |
(二)实例
1、测试文件
[root@localhost project]# cat test.txt I like code,book what do you like my friends like riding,movie
2、测试
# 匹配以I开头的所有字符 [root@localhost project]# grep "^I" test.txt I like code,book. # 匹配以like结尾的字符串 [root@localhost project]# grep "like$" test.txt what do you like # 匹配you [root@localhost project]# grep "y.u" test.txt what do you like #匹配字符o零次或者多次 [root@localhost project]# grep "o*" test.txt I like code,book what do you like my friends like riding,movie
# 字符集匹配
[root@localhost project]# grep "o[dv]" test.txt
I like code,book
my friends like riding,movie
# 匹配非字符集中的字符
[root@localhost project]# grep [^a-y] test.txt
I like code,book
what do you like
my friends like riding,movie
# 重复前一个字符{n,m}
[root@localhost project]# grep "o{2,3}" test.txt
I like code,book
[root@localhost project]# grep "o{1,}" test.txt
I like code,book
what do you like
my friends like riding,movie
[root@localhost project]# grep "o{2}" test.txt
I like code,book
二、扩展正则表达式
(一)扩展字符列表
字符 | 说明 |
+ | 重复前一个任意字符一次或者多次 |
? | 重复前一个任意字符零次或者一次 |
| | 或 |
() | 查找”用户组“中的字符串 |
(二)实例
# 只能使用egrep,grep失效 [root@localhost project]# egrep "o+k" test.txt I like code,book # 重复前一个字符零次 [root@localhost project]# egrep "l?ike" test.txt I like code,book what do you like my friends like riding,movie # 或 [root@localhost project]# egrep "you|movie" test.txt what do you like my friends like riding,movie # 用户组 [root@localhost project]# egrep "(oo|i)k" test.txt I like code,book what do you like my friends like riding,movie